我正在使用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错误中写入失败的内容的本地上下文信息吗?
我根据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))
}
}