【发布时间】:2016-11-06 04:43:18
【问题描述】:
我正在FIRStorageReference 上编写一个 Swift 扩展来检测文件是否存在。我打电话给metadataWithCompletion()。如果没有设置完成块的可选NSError,我认为假设文件存在是安全的。
如果设置了 NSError,则说明出现问题或文件不存在。 storage documentation on handling errors in iOS 声明 FIRStorageErrorCodeObjectNotFound 是我应该检查的错误类型,但无法解决(可能 Swiftified 为更短的 .Name 样式常量?)我不确定我应该检查什么反对。
如果FIRStorageErrorCodeObjectNotFound 设置在某处,我想打电话给completion(nil, false)。
这是我目前的代码。
extension FIRStorageReference {
func exists(completion: (NSError?, Bool?) -> ()) {
metadataWithCompletion() { metadata, error in
if let error = error {
print("Error: \(error.localizedDescription)")
print("Error.code: \(error.code)")
// This is where I'd expect to be checking something.
completion(error, nil)
return
} else {
completion(nil, true)
}
}
}
}
非常感谢。
【问题讨论】:
-
我们故意没有构建“对象存在检查”,因为我们认为在对象获取或元数据获取上检查
FIRStorageErrorCodeObjectNotFound的错误代码已经足够了。你能否给我更多解释为什么你想要这个功能而不是仅仅做对象/元数据获取并在找不到所需对象时处理错误? -
获取元数据是一种很好的方法,我现在不确定我是如何确定发生了哪个错误。在我的代码中,我将如何处理这个 NSError 对象,如果没有错误对象,假设文件存在是否安全?谢谢。
标签: ios swift firebase-storage