从firebase获取子节点(Swift)

问题描述:

如何从firebase获取子节点? 火力地堡结构是在这里:从firebase获取子节点(Swift)

firebase struct

我需要得到一个孩子“照片”为每一个孩子以上。后来添加到collectionView中的每个孩子“照片”。

我的火力结构:

{ 

"Студии" : { 
"Бабулька" : { 
    "Photo" : { 
    "image" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/city3.jpg?alt=media&token=12a87c0c-ade1-43f9-b76b-ecdaa86cf185" 
    }, 
    "address" : "Сатурн", 
    "image" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/city3.jpg?alt=media&token=12a87c0c-ade1-43f9-b76b-ecdaa86cf185", 
    "image1" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/city3.jpg?alt=media&token=12a87c0c-ade1-43f9-b76b-ecdaa86cf185", 
    "name" : "Карапулька" 
}, 
"Дубаи" : { 
    "Photo" : { 
    "image" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/city1.jpg?alt=media&token=c442fd8f-4cc4-4e30-8242-975aaf5427dc" 
    }, 
    "address" : "Тутушка", 
    "image" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/city1.jpg?alt=media&token=c442fd8f-4cc4-4e30-8242-975aaf5427dc", 
    "name" : "Дубаи" 
}, 
"Лондон" : { 
    "Photo" : { 
    "image" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/oko1.jpg?alt=media&token=fedea2cb-93b1-496c-9392-0b95f4ada7b5" 
    }, 
    "address" : "Бейкер стрит", 
    "image" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/oko1.jpg?alt=media&token=fedea2cb-93b1-496c-9392-0b95f4ada7b5", 
    "name" : "Лондон" 
    } 
    } 
} 

感谢您的帮助。

+0

https://*.com/a/45369544/7715250 –

+0

请发表您的火力地堡结构为文本,没有图像。这样,如果我们需要在答案中使用结构,我们不必重新键入它。您可以将Firebase结构作为Firebase控制台中的文本 - >三个点 - >导出JSON – Jay

+0

感谢您的帮助。我添加了问题的firebase结构。 –

要获取所需的数据,请遍历主父节点的所有子注释。假设以下结构

posts 
    post_0 
    Photo 
     image: "https://www....." 
    post_1 
    Photo 
     image: "https://www....." 

和代码来获取图像的URL ...

let ref = self.ref.child("posts") 
ref.observeSingleEvent(of: .value, with: { snapshot in 
    for child in snapshot.children { 
     let snap = child as! DataSnapshot 
     let imageSnap = snap.childSnapshot(forPath: "Photo") 
     let dict = imageSnap.value as! [String: Any] 
     let url = dict["image"] as! String 
     print(url) 
    } 
}) 
+0

谢谢,它的工作原理;)也许你可以提示如何加载一组图像?例如,如果在每个“照片”中,我将具有“图像1”,“图像2”,“图像3”或更多或更少。 –

+0

不要将数据存储在Firebase阵列中,因为Firebase阵列是邪恶看到我对[此问题]的答案(https://*.com/questions/43179477/firebase-changing-layout-of-child-data-information-in -Android/43191862#43191862)。它们可以作为key:value对存储,其中的键由childByAutoId生成。所以它会是images/firebase_key_0:image0和/ images/firebase_key_1:image1等 – Jay