我正在将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
...
检查属性cEntity后,我可以看到
dateApproved = nil;
dateCreated = "2016-08-24 22:20:38 +0000";
这是错误的屏幕截图
注意:它以前可以工作,只是因为我已经迁移了所有代码以使其与Swift 3兼容而不再工作了。
您能否给我一些有关如何解决/跟踪此问题的指示。非常感谢。
最佳答案
实例变量dateApproved
声明为非可选变量,即Swift会认为它永远不会为零。但是,如调试器所示,它为nil。
因此,更改声明以匹配现实并使其可选。
@NSManaged var dateApproved: Date?