1

我在 Xcode 7.3 中有一个 switch 语句(error: NSError作为参数传递后),它的工作方式如下:

if let code:CKErrorCode = CKErrorCode(rawValue: error.code) {
    switch code {
    case .NotAuthenticated: etc...
    }
}

在 Xcode 8 beta 6 中迁移到 Swift 3.0 后,我开始收到错误消息,提示无法识别 CKErrorCode。我仍在导入云,并且迁移将我的枚举小写,我尝试像这样更改它:

switch error.code {
case .notAuthenticated.rawValue: etc...
}

但这似乎也是错误的(测试版在我的系统上似乎有问题,所以错误不断消失和重新出现,所以当我现在编码时很难说它可能只是我的系统,但在我编译时它们仍然存在)。我一直在扫描https://swift.org/migration-guide/#known-migration-issueshttps://swift.org/migration-guide/但还没有找到任何东西,当我用谷歌搜索 CKErrorCode 文档时(我假设它忽略了 Swift 3,因为它处于测试阶段)似乎说我以前的语法是 kosher。

谁能指出我正确的方向?枚举丢失了.rawValue吗?枚举似乎已经改变,但我很难找到关于我应该做什么的文档。是否有可以识别这些枚举案例的 CKErrorCode 替代方法?请不要告诉我云套件错误处理的变化比这大得多:) 提前致谢。

4

1 回答 1

1

从 NSError 转换为 CKError 如下所示:

let nsError: NSError = NSError() // NSError variable. 

let cError = CKError(_nsError: nsError)

let cErrorCode = cError.code
于 2017-01-29T17:16:56.900 回答