iOS 10 Xcode 8 — переход на Swift 3 и дата

#ios #swift #exception #swift3

#iOS #swift #исключение #swift3

Вопрос:

Я нахожусь в процессе переноса приложения iOS с swift 2 на swift 3, и я сталкиваюсь с этой ошибкой, которую я не понимаю, и я не уверен, что делать.

Проблема возникает, когда я пытаюсь прочитать свойство, вызываемое dateApproved , но не для dateCreated .

 print("dateApproved: (cEntity.dateApproved)")
print("dateCreated: (cEntity.dateCreated)")
  

Класс сущности

 @objc(entity)
open class Entity: NSManagedObject {

    ...
    @NSManaged var dateApproved: Date
    @NSManaged var dateCreated: Date
    ...
  

После проверки значения свойства я вижу, что

 dateApproved = nil;
dateCreated = "2016-08-24 22:20:38  0000";
  

Это скриншот ошибки

введите описание изображения здесь

Примечание: это работало раньше, просто больше не работает, поскольку я перенес весь код, чтобы сделать его совместимым с Swift 3.

Не могли бы вы дать мне несколько советов о том, как решить / отследить эту проблему. Очень признателен.

Ответ №1:

Переменная экземпляра dateApproved объявляется как необязательная переменная, то есть Swift будет считать, что она никогда не равна нулю. Однако, как показывает отладчик, оно равно нулю.

Поэтому измените объявление, чтобы оно соответствовало действительности, и сделайте его необязательным.

 @NSManaged var dateApproved: Date?
  

Комментарии:

1. Это действительно была проблема. Спасибо