Swift 更新到Xcode 8 beta 6后,关联枚举中的CKErrorCode和.rawValue丢失
我在Xcode 7.3中有一个switch语句(在将Swift 更新到Xcode 8 beta 6后,关联枚举中的CKErrorCode和.rawValue丢失,swift,xcode,error-handling,enums,ckerror,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无法识别。我仍在导入云,迁移将我的
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...
}
但这似乎也是错误的(beta版似乎在我的系统上有缺陷,所以错误会不断消失和再现,所以在我现在编写代码时很难判断,它可能只是我的系统,但在我编译时它们会一直存在)。我一直在扫描,但还没有发现任何东西,当我在谷歌上搜索CKErrorCode时,文档(我假设它忽略了swift3,因为它是beta版)似乎说我以前的语法是犹太教的
有人能给我指出正确的方向吗?枚举是否丢失了
.rawValue
?枚举似乎已经改变,但我很难找到关于我应该做什么的文档。是否有可以识别这些枚举案例的CKErrorCode替代方案?请不要告诉我云工具包错误处理的变化比这更大:)提前感谢。从NSError转换为CKError,如下所示:
let nsError: NSError = NSError() // NSError variable.
let cError = CKError(_nsError: nsError)
let cErrorCode = cError.code
您只需要从Swift 3错误转换为NSERRORM错误作为NSError传入,当我选择单击
Error
时,它被描述为let Error:NSError
…您的意思是我需要从NSError转换为Swift 3错误(老实说,我有点搞不清楚桥接是如何工作的)。(错误为!NSError)。代码警告我正在从NSError转换为NSError。那么CKErrorCode是否已消失,或者我是否需要修复有关配置的某些内容?转换为CKError代码有效。谢谢,您可能想添加一些注释来解释这个代码唯一的答案。