我使用 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/