ios - 更新 NSError 用户信息

标签 ios objective-c error-handling nserror

我正在尝试使用更多信息更新 NSError 对象。例如,一个 api 调用可能会失败,我想用 View Controller 信息(导致错误的方法名称、客户端消息、任何其他信息)更新从 api 类返回的错误对象。 UserInfo 字典没有 setter 方法,尝试为字典设置值会引发异常(我相信不符合键值代码)。我想用更新后的用户信息创建一个新的 NSError 对象,但我不确定我是否会丢失信息。

问题

更新 NSError 对象的用户信息字典的最佳方法是什么?

最佳答案

通过快速扩展很容易:

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)
  }
}

用法:

var yourError = NSError(domain: "com.app.your", code: 999, userInfo: nil)
yourError = yourError.addItemsToUserInfo(["key1":"value1","key2":"value2"])

关于ios - 更新 NSError 用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18407139/

相关文章:

ios - Parse.com iOS 登录/注册屏幕的可定制性如何?

objective-c - 如何在 iOS 中通过经纬度识别时区

C# ReactiveUI UserError 错误处理程序

objective-c - 如果我打算稍后优化并发性,我应该如何在 Cocoa 中设计通知?

error-handling - 如何实现错误处理?

error-handling - glmer 模型 list2env(数据) : first argument must be a named list 中出现错误

iphone - glDrawElements 在 iPhone 上错误地渲染点

ios - Meteor 应用程序和 iOS 状态栏

ios - 为什么 Sprite Kit SKNode 公开 zRotation、xScale 和 yScale 而不是简单的变换?

ios - 是否存在与 Swift 的 fatalError 等效的 Objective-C?