我在几个月无人看管的情况下离开了一个项目,仅在上周安装了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).
特别是:
Non-optional types may no longer be compared to nil,and ImplicitlyUnwrappedOptional no longer conforms to BooleanType.
您的managedobjectContext变量是非可选类型NSManagedobjectContext.它不能是零,所以检查是无用的,现在是禁止的.
我不知道你的self.persistentStoreCoordinator的返回类型,但很可能它也是一个非可选的.
BTW,也有兴趣的是这种变化,这有点相关:
A large number of Foundation APIs have been audited for optional conformance,removing a significant number of implicitly unwrapped optionals from their interfaces. This clarifies the nullability of their properties and arguments / return values of their methods. This is an ongoing effort since beta 5.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。