0
我有一個代碼,它運行通過palettes
的所有孩子,並找出顏色十六進制是否與這些孩子中的任何值相匹配。如果匹配,它會從childByAutoID
中提取URL,然後將其添加到數組中。如何查詢並確保返回的值只添加到數組中?
databaseRef.child("palettes").queryOrdered(byChild: "top").queryEqual(toValue: text).observeSingleEvent(of: .value, with: { (snapshot) in
if let snapDict = snapshot.value as? [String:AnyObject]{
for each in snapDict as [String:AnyObject]{
let _URL = each.value["URL"] as! String
self.arrayVar.append(_URL) // Turning it into an array.
}
}
})
databaseRef.child("palettes").queryOrdered(byChild: "bottom").queryEqual(toValue: text).observeSingleEvent(of: .value, with: { (snapshot) in
if let snapDict = snapshot.value as? [String:AnyObject]{
for each in snapDict as [String:AnyObject]{
let _URL = each.value["URL"] as! String
self.arrayVar.append(_URL) // Turning it into an array.
}
}
})
databaseRef.child("palettes").queryOrdered(byChild: "accessories").queryEqual(toValue: text).observeSingleEvent(of: .value, with: { (snapshot) in
if let snapDict = snapshot.value as? [String:AnyObject]{
for each in snapDict as [String:AnyObject]{
let _URL = each.value["URL"] as! String
self.arrayVar.append(_URL) // Turning it into an array.
}
}
})
databaseRef.child("palettes").queryOrdered(byChild: "shoes").queryEqual(toValue: text).observeSingleEvent(of: .value, with: { (snapshot) in
if let snapDict = snapshot.value as? [String:AnyObject]{
for each in snapDict as [String:AnyObject]{
let _URL = each.value["URL"] as! String
self.arrayVar.append(_URL) // Turning it into an array.
}
}
})
}
然而,這樣做的問題是,當有相同childByAutoID
內的兩個相似的價值觀,它會追加「網址」兩次。
這裏是我的JSON樹的例子:
{
"palettes" : {
"-KTjfdgcwdkF5j3OWOg8" : {
"URL" : "test1",
"accessories" : "#000000",
"bottom" : "#2B676E",
"shoes" : "#000000",
"top" : "#274E64"
},
"-KTji_7xUNu2PejD4Xz6" : {
"URL" : "test2",
"accessories" : "#2B6766",
"bottom" : "#2B676E",
"shoes" : "#000000",
"top" : "#274E64"
}
}
}
將返回[test1, test1, test2]
時#000000
等於text
,當打印arrayVar
。
如何確保URL只附加一次childByAutoID
?例如,[test1, test2]
在這種情況下。
哦,我需要它在數組形式的原因是因爲我需要使用它來填充collectionsview。因此,這些URL將被翻譯成圖像以形成一個圖像數組,然後顯示在一個collectionsView –
答案更新...您可以輕鬆地瀏覽字典來這樣做。當遍歷整個數組並檢查所需的值時,如果它已經存在,則會浪費內存 – Dravidian
謝謝,但是我通過重構我的json樹來採取另一種方法。我認爲我現在的模型太麻煩了。 –