我正在尝试将多个自定义元数据设置为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?
答案 0 :(得分:1)
在docs中,可以将自定义元数据设置为
let metadata = [
"customMetadata": [
"location": "Yosemite, CA, USA",
"activity": "Hiking"
]
]
您应该使用字典,而不是一次又一次地替换元数据的值。
答案 1 :(得分:0)
似乎您覆盖了该值。您需要将代码更改为:
let metadata = StorageMetadata()
metadata.contentType = "image/jpg"
metadata.customMetadata = ["lightVibrantColor" : "0",
"imageWidth" : "\(updatedProfileImage.size)",
"imageHeight" : "\(updatedProfileImage.size.height)",
"darkMutedColor" : "0"]
答案 2 :(得分: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
}
}
然后,您可以访问您的元数据并使用它。