我在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-issues和https://swift.org/migration-guide/,但还没有找到任何内容,当我谷歌CKErrorCode文档(我假设它忽略了Swift 3,因为它处于测试阶段)似乎说我以前语法是犹太教。
有人能指出我正确的方向吗?枚举会丢失.rawValue
吗? Enums似乎已经改变了,但是我很难找到关于我应该做什么的文档。是否有CKErrorCode的替代方案可以识别这些枚举案例?请不要告诉我云套件错误处理比这更改了:)提前感谢。
答案 0 :(得分:1)
从NSError转换为CKError,如下所示:
let nsError: NSError = NSError() // NSError variable.
let cError = CKError(_nsError: nsError)
let cErrorCode = cError.code