首页 > 解决方案 > 在“FIRStorageMetadata *”类型的对象上找不到属性“downloadURL” - 尝试构建 Flutter 项目时出现此错误

问题描述

我正在尝试在安装了 firebase 的 Xcode 上构建 Flutter 项目。我收到以下错误:Property 'downloadURL' not found on object of type 'FIRStorageMetadata *'

这是由 FirebaseStoragePlugin.m 文件中的以下部分引起的:

  NSString *path = call.arguments[@"path"];
  NSDictionary *metadataDictionary = call.arguments[@"metadata"];
  FIRStorageMetadata *metadata;
  if (![metadataDictionary isEqual:[NSNull null]]) {
    metadata = [self buildMetadataFromDictionary:metadataDictionary];
  }
  FIRStorageReference *fileRef = [[FIRStorage storage].reference child:path];
  [fileRef putData:data
          metadata:metadata
        completion:^(FIRStorageMetadata *metadata, NSError *error) {
          if (error != nil) {
            result(error.flutterError);
          } else {
            // Metadata contains file metadata such as size,
            // content-type, and download URL.
            NSURL *downloadURL = metadata.downloadURL;  <---------------- This line
            result(downloadURL.absoluteString);
          }
        }];
}

由于我没有生成此代码,因此我并不特别想编辑它,因为它应该是开箱即用的。我尝试更改方法以查看更高版本的 Firebase 是否可能只接受另一个功能但无济于事。在这种情况下我该怎么办?我是否应该尝试使用更高版本的 Firebase 重建项目,或者是否有单行修复?

标签: firebaseflutterfirebase-storage

解决方案


2018 年 5 月downloadURL课堂StorageMetadata移除。如果您的本机 iOS 代码仍然使用它,那么是时候找到更新的 SDK 或更新您的代码以匹配有关上传文件和获取其下载 URL的文档。

如果您使用的是FlutterFire 绑定库metadata.downloadURL,请升级到最新版本(因为我在其当前代码库中绝对看不到任何引用)。如果您正在使用另一个库,请检查最新版本是否解决了问题 - 或者考虑切换到 FlutterFire 库,因为这些库维护得非常积极。


推荐阅读