Jef*_*gan 6 error-handling objective-c nserror ios
我正在尝试NSError使用更多信息更新对象.例如,api调用可能会失败,我想更新从api类返回的错误对象与视图控制器信息(导致错误的方法名称,客户端消息,任何其他信息).UserInfo字典没有setter方法,并且尝试为字典设置值会引发异常(我认为不符合键值代码).我想过NSError用更新的用户信息创建一个新对象,但我不确定我是否会丢失信息.
更新NSError对象的用户信息字典的最佳方法是什么?
规范的做法是使一个新的NSError一切你自己,然后把原来NSError的userInfo下键字典NSUnderlyingErrorKey.这是一个稍微不同的结果,但我能说的最好NSErrors是故意不可变的.
通过快速扩展,很容易:
extension NSError {
func addItemsToUserInfo(newUserInfo: Dictionary<String, String>) -> NSError {
var currentUserInfo = userInfo
newUserInfo.forEach { (key, value) in
currentUserInfo[key] = value
}
return NSError(domain: domain, code: code, userInfo: currentUserInfo)
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
var yourError = NSError(domain: "com.app.your", code: 999, userInfo: nil)
yourError = yourError.addItemsToUserInfo(["key1":"value1","key2":"value2"])
Run Code Online (Sandbox Code Playgroud)
最简单的方法是获取userInfo字典的可变副本并添加您喜欢的任何内容。然后,您必须创建一个新的NSError(因为没有 setUserInfo: 方法),其域和代码与原始域和代码相同。
| 归档时间: |
|
| 查看次数: |
4459 次 |
| 最近记录: |