swift - 如何使用调用站点上下文来报告/传播 Firestore 错误至 recordError

标签 swift firebase google-cloud-firestore twitter-fabric

我使用 Firestore 来保存数据,Firestore 文档和 Google 结果中的所有错误处理示例本质上都具有相同的特别不丰富的模式:

.setData(user.documentData) { error in
          if let error = error {
            print("Error writing user to Firestore: \(error)")
          }
        }

但是,我想将有关调用站点的上下文(在上面的示例中我试图写入用户)添加到错误中,而不是获取通用本地化描述 FireStore 记录时写入数据失败的错误错误并传播错误。例如:

.setData(user.documentData) { error in
          if let error = error {
            Crashlytics.sharedInstance().recordError(error)
            print("Error writing user to Firestore: \(error)")
            completion(.failure(error))
          }
        }

是否有一种模式可以创建一个遵循 Error 的 Swift 自定义错误枚举,该枚举以 Firestore 错误初始化,以便保留其上下文并添加错误的应用程序上下文?是否有其他方法可以提供有关 FireStore 错误写入失败的本地上下文信息?

最佳答案

我已经根据 SwiftBySundell 的帖子实现了这个,这似乎很合适。

enum FireStoreError : Error {
  case userWriteError(String)
  ....
}

extension FireStoreError : LocalizedError {
  var localizedDescription : String? {
    switch self {
    case .userWriteError(let s): return NSLocalizedString("Unable to persist user: \(s)", comment: "")
    }
  }
}

.setData(user.documentData) { error in
          if let error = error {
            let userError = FireStoreError.userWriteError(error.localizedDescription)
            Crashlytics.sharedInstance().recordError(userError)
            completion(.failure(userError))
          }
        }

关于swift - 如何使用调用站点上下文来报告/传播 Firestore 错误至 recordError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59906287/

相关文章:

ios - 没有看到任何官方文档 - 我们可以在应用程序中保留 showFeaturePoint 吗?

ios - 我正在尝试计算两次之间的差异 (HH :MM:SS) in iOS

swift - iOS swift : does not save pList with class

firebase - 如何在 firestore 中存储和显示多行文本

尝试使用 Firestore API 时出现 Swift 错误

Angular Firestore 集合快照更改

swift - SuperpoweredAdvanceAudioPlayer 可以从 Swift 调用吗?

基于 Firebase 数据库的 ios 应用程序 - 在本地合并更改

javascript - 使用基于 firebase 查询的规则来保护数据(使用 orderByChild 和不可索引的键)

javascript - 使用 'where' 的 Firestore 查询日期范围