更新到Xcode 8 beta 6后,从关联的枚举中丢失了CKErrorCode和.rawValue

时间:2016-09-01 16:36:56

标签: swift xcode error-handling enums ckerror

我在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,因为它处于测试阶段)似乎说我以前语法是犹太教。

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

1 个答案:

答案 0 :(得分:1)

从NSError转换为CKError,如下所示:

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

let cError = CKError(_nsError: nsError)

let cErrorCode = cError.code