我正在将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";

这是错误的屏幕截图

ios - iOS 10 Xcode 8-迁移到Swift 3和Date-LMLPHP

注意:它以前可以工作,只是因为我已经迁移了所有代码以使其与Swift 3兼容而不再工作了。

您能否给我一些有关如何解决/跟踪此问题的指示。非常感谢。

最佳答案

实例变量dateApproved声明为非可选变量,即Swift会认为它永远不会为零。但是,如调试器所示,它为nil。

因此,更改声明以匹配现实并使其可选。

@NSManaged var dateApproved: Date?

10-07 17:10