【发布时间】:2019-06-25 03:35:35
【问题描述】:
我正在尝试检索一个孩子的孩子。整个 snapshotValue 返回 null。当我检索与孩子相同的数据(未嵌套)时,它检索得很好。
我正在使用 XCode 10 和 Swift 4
出于故障排除的目的,我有两个名为“Promoters”的节点。一个位于根目录,一个嵌套在“Partners”子级中(首选)。当嵌套节点工作时,我将删除顶级节点。
这是数据结构:
"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)
}
我更喜欢observeSingleEvent,但这也返回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)
**我现在正在使用强制解包,以便在调查了后端规则可以完成多少数据完整性后,稍后进行审查:)
任何帮助将不胜感激。
【问题讨论】:
-
它看起来像快照有第一条记录,但将它分配给 snapshotValue 是失败的.....po 会产生这个。
:3:1: 错误:使用未解析的标识符“snapshotValue”snapshotValue
标签: swift firebase firebase-realtime-database swift4 data-retrieval