如何在Swift中为NSError分配错误代码?以下给出了一个编译错误,说“无法在'e'中分配'代码'”:
var e = NSError()
e.code = 6;
此外,为什么以下代码会生成'Int is not convertible to selector'
的错误 if e.code == EKAuthorizationStatus.Restricted
{
}
答案 0 :(得分:7)
错误代码属性是只读的,类型为Int。您需要按如下方式初始化:
var e= NSError(domain: <string?>, code: 6, userInfo: <AnyObject>)
更新: 正如@ahruss指出你还需要将枚举转换为原始形式,因为类型转换不是隐含的,我已相应更新了示例。
请查找有关NSError类here的文档。
示例游乐场:
import Cocoa
var e = NSError(domain: nil, code: 6, userInfo: nil);
//if e.code == 6
if e.code == EKAuthorizationStatus.Restricted.toRaw()
{
println("success");
}
答案 1 :(得分:1)
答案的另一半(wbennet's answer覆盖另一部分,代码是只读的)是EKAuthoriziationStatus是一个枚举,并且你没有在Swift中获得隐式转换。你需要这样做:
if e.code == EKAuthorizationStatus.Restricted.toRaw()
{
...
}