NSError 代码检查:二元运算符“==”不能应用于两个 Int 操作数

Posted

技术标签:

【中文标题】NSError 代码检查:二元运算符“==”不能应用于两个 Int 操作数【英文标题】:NSError code check: Binary operator '==' cannot be applied to two Int operands 【发布时间】:2015-09-05 20:12:30 【问题描述】:

有人可以告诉我我在这里做错了什么吗? "error" 是从 CloudKit 返回的 NSError。

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

给我这个错误:

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

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

if error.code == 4 
    //do something

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

【问题讨论】:

我认为是消息搞砸了。错误可能是可选的吗? 显示更多代码,errorerror.codeCKErrorCode 是如何定义的? 对不起,我以为主题涵盖了这一点。 "error" 只是一个从 CloudKit 返回的 NSError。 NSError 定义是相当标准的。我确实检查了,但都不是可选的。 可能和***.com/a/24509912/1187415类似。 和CKErrorCode.NetworkFailure.rawValue比较怎么样? 【参考方案1】:

这里的问题是Int 没有将CKErrorCode 作为输入的构造函数。

在 cmets 中,比较两个值的方法是:

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

谢天谢地,XCode 7 和 Swift 2 的错误消息已得到改进,因此您会看到:

无法使用“(CKErrorCode)”类型的参数列表调用“Int”类型的初始化程序

这是一个更好的指示出了什么问题。

【讨论】:

以上是关于NSError 代码检查:二元运算符“==”不能应用于两个 Int 操作数的主要内容,如果未能解决你的问题,请参考以下文章

二元运算符“+”不能应用于“_”和“字符串”类型的操作数

Swift 二元运算符“+”不能应用于两个 CGFloat 操作数

二元运算符“==”不能应用于“布尔”和“字符串?”类型的操作数对于 2020 年的 Swift [重复]

二元运算符 += 不能应用于类型的操作数 [关闭]

二元运算符'+'不能应用于'String'和'() -> String'类型的操作数

Swift 3 为啥不能将二元运算符“===”应用于两个“日期”操作数?