加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – Object!= nil在Beta 5中运行但在Beta 6中不运行?

发布时间:2020-12-14 04:45:06 所属栏目:百科 来源:网络整理
导读:我在几个月无人看管的情况下离开了一个项目,仅在上周安装了Beta 5,它在AppDelegate. swift中修复了大量’nil’错误之后起作用,今天又尝试了Beta 6,’nil’错误? func saveContext () { var error: NSError? = nil let managedObjectContext = self.managedO
我在几个月无人看管的情况下离开了一个项目,仅在上周安装了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的返回类型,但很可能它也是一个非可选的.

解决方案很简单:删除if检查.他们不需要.

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读