在Swift中,我有一个自定义的NSError,我需要获取错误userInfo字典并稍后添加内容,但在赋值行中它是nil,但是error.userInfo
有一个对象...
将error.userInfo设为nil:
class MyError: NSError {
init(error: NSError) {
var newUserInfo = error.userInfo
...newUserInfo is nil...
super.init(...)
}
}
如果我指定它2次就行了(我知道那里有什么遗漏但是什么?)
init(error: NSError) {
var newUserInfo = error.userInfo
newUserInfo = error.userInfo
...newUserInfo now contains a dictionary...
}
为什么?
答案 0 :(得分:1)
这对我来说似乎是可能是编译器的错误,但是如果没有看到更多的代码,很难说清楚。无论如何,如果使用条件转换,这种事情更容易调试。 swift中的userInfo
是Dictionary<NSObject: AnyObject>?
;如果您从Cocoa API获取此信息,则可以执行以下操作:
if let userInfo = error.userInfo as? [NSObject: NSObject] {
// modify and assign values as necessary
}
这至少会让事情变得更加清晰。