Я пытаюсь вернуть ребенка от ребенка.весь snapshotValue возвращает ноль.Когда я получаю те же данные, что и дочерний (не вложенный), он получает нормально.
Я использую XCode 10 и Swift 4
Для устранения неполадок у меня есть два узла, называемые «промоутеры».,Один в корне и один вложенный внутри дочернего элемента «Партнеры» (предпочтительно).Я удалю узел верхнего уровня, когда у меня будет работать вложенный узел.
Вот структура данных:
"Partners" : {
"Acts" : [hidden],
"Promoters" : [ null, {
"Cell" : hidden,
"Contact Name" : “hidden”,
"Email" : “hidden”,
"Facebook" : “hidden“,
"Title" : "CHORD Productions"
} ]
},
"Promoters" : {
"chord" : {
"Title" : "Chord Productions"
}
}
Получает искомые данные (список заголовков).для заполнения средства выбора):
let promotersDB = Database.database().reference().child("Promoters")
promotersDB.observe(.childAdded) { (snapshot) in
let snapshotValue = snapshot.value as! Dictionary<String, String>
let promoterName = snapshotValue["Title"]!
let promoter = PromoterClass()
promoter.promoterName = promoterName
self.promoterArray.append(promoter)
let isSuccess = true
completion(isSuccess)
}
Возвращает nil:
let promotersDB = Database.database().reference().child("Partners").child("Promoters")
promotersDB.observe(.childAdded) { (snapshot) in
let snapshotValue = snapshot.value as! Dictionary<String, String>
let promoterName = snapshotValue["Title"]!
let promoter = PromoterClass()
promoter.promoterName = promoterName
self.promoterArray.append(promoter)
let isSuccess = true
completion(isSuccess)
}
Я бы предпочел наблюдать заSingleEvent, но также возвращает nil:
let promotersDB = Database.database().reference().child("Promoters")
promotersDB.observeSingleEvent(of: .value, with: { (snapshot) in
let snapshotValue = snapshot.value as! Dictionary<String, String>
let promoterName = snapshotValue["Title"]!
let promoter = PromoterClass()
promoter.promoterName = promoterName
self.promoterArray.append(promoter)
let isSuccess = true
completion(isSuccess)
})
ошибка:
Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
** Сейчас я использую принудительное развертывание, которое будет рассмотрено позже, после изучения того, сколько целостности данных можно сделать с помощью правил бэкэнда:)
Любая помощь будет принята с благодарностью.