如何通过呼叫站点上下文将Firestore错误报告/传播到recordError

问题描述 投票:0回答:1

我正在使用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错误一起启动,以便保留其上下文并添加错误的apps上下文?还有其他方法可提供有关在FireStore错误中写入失败的内容的本地上下文信息吗?

swift firebase google-cloud-firestore twitter-fabric
1个回答
0
投票

我根据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))
          }
        }

© www.soinside.com 2019 - 2024. All rights reserved.