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 是实际的错误代码。
【问题讨论】:
我认为是消息搞砸了。错误可能是可选的吗? 显示更多代码,error
、error.code
和 CKErrorCode
是如何定义的?
对不起,我以为主题涵盖了这一点。 "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 [重复]