【问题标题】:Binary operator '&&' cannot be applied to two Bool operands [duplicate]二元运算符'&&'不能应用于两个布尔操作数[重复]
【发布时间】:2015-08-29 14:02:45
【问题描述】:

我最近将 Xcode 更新到了新的 7.0 测试版。

我使用助手进行了迁移,但还有一些问题。

func saveContext () {
    if let moc = self.managedObjectContext {
        var error: NSError? = nil
        if moc.hasChanges && !moc.save() {
            NSLog("Unresolved error \(error), \(error!.userInfo)")
            abort()
        }
    }
}

第 4 行有 4 个问题: 第一个是:

二元运算符 '&&' 不能应用于两个 Bool 操作数

第二个是:

调用可以抛出,但是没有标记'try'并且错误没有处理

有人可以帮帮我吗?

【问题讨论】:

  • 这个问题的标题比重复的问题要好得多,因为程序员可能会在谷歌上搜索这个令人困惑的错误消息。作为参考,以下声明给出了相同的错误消息: func test() { return true && true } ,请注意该函数被声明为 void ,即 ->Bool is missing.

标签: beta swift2 xcode7


【解决方案1】:

这里有一些代码可以解决问题。记得在 throw 语句之前加上 try 和 catch 。

func saveContext () {
    if let moc = self.managedObjectContext {
        if moc.hasChanges  {
            do {
                try moc.save()
            } catch {
                NSLog("Unresolved error \(error)")
                abort()
            }
        }
    }
}

【讨论】:

  • 我现在收到以下错误:“类型'ErrorType.Protocol'不符合协议'ErrorType'”
  • 我编辑了代码。可以试试最新的更新吗?
  • 是的,现在可以正常工作了 :) 非常感谢!!!
  • 很高兴听到这个消息。如果您满意,请考虑批准我的回答。
  • @vacawama:如果我没记错的话,一个普通的catchcatch let error 的快捷方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
相关资源
最近更新 更多