添加多个自定义元数据 Firebase 存储 swift

Add several custom metadata Firebase Storage swift

我正尝试在 Swift

上将多个自定义元数据设置到 Firebase 存储

我的代码如下:

let metadata = StorageMetadata()
        metadata.contentType = "image/jpg"
        metadata.customMetadata = ["lightVibrantColor" : "0"]
        metadata.customMetadata = ["imageWidth" : "\(updatedProfileImage.size.width)"]
        metadata.customMetadata = ["imageHeight" : "\(updatedProfileImage.size.height)"]
        metadata.customMetadata = ["darkMutedColor" : "0"]

但是,只会发送最后一个自定义元数据。我知道,因为当我为另一个更改最后一个自定义元数据时,就是要发送的那个。

如何添加多个自定义元数据以便将其发送到 Firestore?

docs开始,自定义元数据可以设置为

let metadata = [
  "customMetadata": [
    "location": "Yosemite, CA, USA",
    "activity": "Hiking"
  ]
]

与其一次又一次地替换元数据的值,不如使用字典。

您似乎覆盖了该值。您需要将代码更改为:

let metadata = StorageMetadata()
metadata.contentType = "image/jpg"
metadata.customMetadata = ["lightVibrantColor" : "0",
"imageWidth" : "\(updatedProfileImage.size)",
"imageHeight" : "\(updatedProfileImage.size.height)",
"darkMutedColor" : "0"]

首先,您必须创建元数据的实例...然后,您将值添加到可变 属性 "customMetadata"。之后,将该元数据连接到您上传的值(在本例中为图像)。

    let metadata = StorageMetadata()
    metadata.customMetadata = ["key" : "value", "key" : "value"]
    let uploadTask = childImage.putData(data, metadata: metadata){metadata, error in
        guard let metadata = metadata else {
            if error != nil {
                print("Error")
            }
            return
        }
    }

然后您可以访问您的元数据并使用它。