доступ к вложенным данным Firebase в Swift

Я работаю со структурой данных, и я перебираю пару узлов, и вот данные json, которые я получаю.

Snap (20171012) {
"-KwM45HyW4UduQgKTGn6" =     {
    ImageName = "Screen Shot 2017-10-13 at 11.24.51 AM.png";
    fileURL = "";
    thumbFileUrl = "";
    user = "User not defined";
};
"-KwM4limD2aRyHgeKE5P" =     {
    ImageName = "test.png";
    fileURL = "";
    thumbFileUrl = "";
    user = "User not defined";
};

}

После этого я могу получить доступ к значению «привязки», используя свой ключ data.key, чтобы получить «20171012».

ref.child(myselected_spot!).observe(DataEventType.value, with: { (snapshot) in
        if snapshot.childrenCount > 0 {
            for mydata in snapshot.children.allObjects as! [DataSnapshot]
            {
                if mydata.key.characters.count == 8 {
                self.formattedDates.append(convertDate(stringDate: mydata.key))
                self.selected_dates.append(mydata.key)

Как мне получить значение для «ImageName»


person Ryan B.    schedule 28.10.2017    source источник


Ответы (2)


Ваш mydata — это еще один DataSnapshot, поэтому вы можете получить доступ ко всем и свойства этого класса. В этом случае вы ищете DataSnapshot.childSnapshotForPath::

ref.child(myselected_spot!).observe(DataEventType.value, with: { (snapshot) in        if snapshot.childrenCount > 0 {
    for mydata in snapshot.children.allObjects as! [DataSnapshot]
    {
        if mydata.key.characters.count == 8 {
        self.formattedDates.append(convertDate(stringDate: mydata.key))
        self.selected_dates.append(mydata.key)
        print(mydata.childSnapshot(forPath: "ImageName").value)
person Frank van Puffelen    schedule 28.10.2017
comment
Итак, близко, но я получаю ‹null›, напечатанный в заявлении - person Ryan B.; 29.10.2017

Довольно просто - я не знаю, что такое переменная myselected_Spot, но я собираюсь предположить, что это -KwM45HyW4UduQgKTGn6. Если приведенный ниже код не дает результатов, мне нужно знать, что это за переменная.

ref.child(myselectd_spot).observe(.value, with: { (snapshot) in
    if snapshot.value is NSNull{
        //handles errors
        return
    }
    else{
        if let selectedSnapDict = snapshot.value as? NSDictionary {//Can also be [String: Any]
            print(selectedSnapDict["ImageName"] as! String) //We know it's a string
        }
        else{
            //null
        }
    }
})
person Torewin    schedule 29.10.2017