关于swift中NSError的问题

时间:2014-08-07 20:45:41

标签: swift

如何在Swift中为NSError分配错误代码?以下给出了一个编译错误,说“无法在'e'中分配'代码'”:

        var e = NSError()
        e.code = 6;

此外,为什么以下代码会生成'Int is not convertible to selector'

的错误
        if e.code == EKAuthorizationStatus.Restricted
        {
        }

2 个答案:

答案 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()
{
    ...
}