swift – Object!= nil在Beta 5中运行但在Beta 6中不运行?
我在几个月无人看管的情况下离开了一个项目,仅在上周安装了Beta 5,它在AppDelegate.
swift中修复了大量’nil’错误之后起作用,今天又尝试了Beta 6,’nil’错误?
func saveContext () { var error: NSError? = nil let managedObjectContext = self.managedObjectContext if managedObjectContext != nil { if managedObjectContext.hasChanges && !managedObjectContext.save(&error) { abort() } } } var managedObjectContext: NSManagedObjectContext { if _managedObjectContext == nil { let coordinator = self.persistentStoreCoordinator if coordinator != nil { _managedObjectContext = NSManagedObjectContext() _managedObjectContext!.persistentStoreCoordinator = coordinator } } return _managedObjectContext! } 错误说明,特别是在这一行 if managedObjectContext != nil { 'Cannot invoke '!=' with an argument list of type (NSManagedObjectContext,NilLiteralConvertable)' 和 if coordinator != nil { 'Cannot invoke '!=' with an argument list of type (NSPersistantStoreCoordinator,NilLiteralConvertable)' 它在Beta 5中运行,所以我错过了补丁说明中的任何内容吗? 解决方法
这是由于Xcode 6 beta 6中的一些变化(见
release notes).
特别是:
您的managedObjectContext变量是非可选类型NSManagedObjectContext.它不能是零,所以检查是无用的,现在是禁止的. 我不知道你的self.persistentStoreCoordinator的返回类型,但很可能它也是一个非可选的. 解决方案很简单:删除if检查.他们不需要. BTW,也有兴趣的是这种变化,这有点相关:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |