如何检测 Firebase 存储文件是否存在?

Jos*_*oid 5 ios swift firebase-storage

我正在编写一个 Swift 扩展FIRStorageReference来检测文件是否存在。我在打电话metadataWithCompletion()。如果NSError未设置完成块的 optional ,我认为可以安全地假设该文件存在。

如果设置了 NSError,要么出现问题,要么文件不存在。关于在 iOS 中处理错误存储文档指出这FIRStorageErrorCodeObjectNotFound是我应该检查的错误类型,但没有解决(可能 Swiftified 为更短的 .Name 样式常量?)而且我不确定我应该是什么检查它。

completion(nil, false)如果FIRStorageErrorCodeObjectNotFound设置在某处,我想打电话。

到目前为止,这是我的代码。

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)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

提前谢谢了。

Mik*_*ald 4

您可以像这样检查错误代码:

// Check error code after completion
storageRef.metadataWithCompletion() { metadata, error in
  guard let storageError = error else { return }
  guard let errorCode = FIRStorageErrorCode(rawValue: storageError.code) else { return }
  switch errorCode {
    case .ObjectNotFound:
      // File doesn't exist

    case .Unauthorized:
      // User doesn't have permission to access file

    case .Cancelled:
      // User canceled the upload

    ...

    case .Unknown:
    // Unknown error occurred, inspect the server response
  }
}
Run Code Online (Sandbox Code Playgroud)