自定义NSError奇怪的行为Swift

时间:2014-12-16 21:17:02

标签: swift nserror

在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...
}

为什么?

1 个答案:

答案 0 :(得分:1)

这对我来说似乎是可能是编译器的错误,但是如果没有看到更多的代码,很难说清楚。无论如何,如果使用条件转换,这种事情更容易调试。 swift中的userInfoDictionary<NSObject: AnyObject>?;如果您从Cocoa API获取此信息,则可以执行以下操作:

if let userInfo = error.userInfo as? [NSObject: NSObject] {
    // modify and assign values as necessary
}

这至少会让事情变得更加清晰。