我从Firestore数据库获得数组列表,并将其附加到以下变量:
var productTags : [String : [String]] = [:]这是我获取数据并将其附加到productTags变量的代码:
db.collection(DatabaseRef.searchTags).document(DatabaseRef.productTags).getDocument { snapshot, error in
guard error == nil, let snapshot = snapshot else {
return
}
let data = snapshot.data()!
for (key, _) in data {
let productTags = data["\(key)"] as? [Any]
if let maxIndex = productTags?.count {
for index in 0..<maxIndex {
if let tag = productTags![index] as? String, tag != "" {
if self.productTags[key] == nil {
self.productTags[key] = []
self.productTags[key]?.append(tag)
} else {
self.productTags[key]?.append(tag)
}
}
}
}
}
}这是非常好的工作,并给我以下结果:
productTags = [ product1 : [tag1, tag2, tag3, tag4],
product2 : [tag1, tag2, tag3, tag4, tag 5],
product3 : [tag1, tag2, tag3]
] 但是,我需要将字典转换为数组,以便结果如下所示:
productTags = [ [product1 : [tag1, tag2, tag3, tag4]],
[product2 : [tag1, tag2, tag3, tag4, tag 5]],
[product3 : [tag1, tag2, tag3]]
] 所以我的变量应该是这样的:
var productTagsArray : [[String : [String]]] = [[:]]如何更改代码,以便将其添加到数组中而不是字典中?
发布于 2020-04-10 02:42:33
我建议在完成之后将字典转换为数组:
let productTagsArray = productTags.map { [$0: $1] }此外,您还可以使用字典查找的default版本来更改以下内容:
if self.productTags[key] == nil {
self.productTags[key] = []
self.productTags[key]?.append(tag)
} else {
self.productTags[key]?.append(tag)
}这方面:
self.productTags[key, default: []].append(tag)https://stackoverflow.com/questions/61132769
复制相似问题