NSError代码检查:二进制运算符'=='不能应用于两个Int操作数

问题描述:

有人可以告诉我我在做什么错吗? “错误”是从CloudKit返回的NSError。NSError代码检查:二进制运算符'=='不能应用于两个Int操作数

if error.code == Int(CKErrorCode.NetworkFailure) { 
    //do something 
} 

给了我这个错误:

Binary operator '==' cannot be applied to two Int operands

如果我这样做,它工作正常:

if error.code == 4 { 
    //do something 
} 

其中4是实际的错误代码。

+1

我认为这是消息已经搞砸了。也许错误是可选的? –

+0

显示更多代码,'error','error.code'和'CKErrorCode'如何定义? – Kametrixom

+0

对不起,我认为该主题涵盖了这一点。 “错误”只是从CloudKit返回的NSError。 NSError的定义是相当标准的。我没有检查,也没有选择权。 –

这里的问题是,Int没有一个构造函数,它需要CKErrorCode作为输入。

正如评论,这两个值进行比较的方法是:

if error.code == CKErrorCode.NetworkFailure.rawValue { 
    //do something 
} 

值得庆幸的是,该错误消息已为的XCode 7和斯威夫特2的提高,所以你会看到:

Cannot invoke initializer for type 'Int' with an argument list of type '(CKErrorCode)'

这是什么地方出错的好得多的指标。