自定义 NSError 奇怪的行为 Swift
Posted
技术标签:
【中文标题】自定义 NSError 奇怪的行为 Swift【英文标题】:Custom NSError weird behaviour Swift 【发布时间】:2014-12-16 21:17:01 【问题描述】:在 Swift 中,我有一个自定义的 NSError,我需要获取错误 userInfo 字典并稍后添加内容,但在 assign 行中它是 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...
为什么?
【问题讨论】:
newUserInfo
是一个实例变量,还是只是一个局部变量?你可能要声明两次吗?
这是一个局部变量,我只在这里声明它
刚刚试了一下,分配没有问题,能不能把剩下的代码贴出来。
你怎么知道它是零?您的代码不会对值进行任何测试或记录。
【参考方案1】:
这在我看来可能编译器有问题,但如果不查看更多代码就很难判断。无论如何,如果您使用条件转换,这种事情更容易调试。 userInfo
在 swift 中是 Dictionary<NSObject: AnyObject>?
;如果您是从 Cocoa API 获得的,您可以执行以下操作:
if let userInfo = error.userInfo as? [NSObject: NSObject]
// modify and assign values as necessary
这至少可以更清楚地说明问题出在哪里。
【讨论】:
这种方法唯一可能出现的问题是,您可能会在一个更有用的地方得到一个空字典,以便理解 userInfo 为 nil。以上是关于自定义 NSError 奇怪的行为 Swift的主要内容,如果未能解决你的问题,请参考以下文章