我正在使用循环将名称上传到 FireBase 中的表,该循环使用 childByAutoID()
方法添加它们,如下所示:
for dependent in dependentsArray
{
let dependentName = dependent.text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
CURRENT_USER_DEPENDENTS_URL.childByAutoId().setValue(["name" : dependentName])
}
然后在我的仪表板中看起来像这样:
然后我像这样观察从属表:
CURRENT_USER_DEPENDENTS_URL.observeEventType(.Value, withBlock: { snapshot in
print(snapshot.value)
self.dependentsJSON = snapshot.value as? [String : [String : String]]
}, withCancelBlock: { error in
print(error.description)
})
上面代码中的 print
语句生成这个 JSON 字典:
{
"-KH3Cg0KFvMNEULYUezv" = {
name = one;
};
"-KH3Cg0LeTs54nbYonmv" = {
name = two;
};
"-KH3Cg0LeTs54nbYonmw" = {
name = three;
};
"-KH3Cg0LeTs54nbYonmx" = {
name = four;
};
}
很简单,我希望能够从这个 JSON 字典中获取每个依赖的 UID,这样我就可以在 NSUserDefaults
中创建一个依赖 UID 数组,如下所示以及像这样对 JSON 字典进行排序:
if let firstName = self.dependentsJSON?["-KH3Cg0LeTs54nbYonmx"]?["name"] {
print(firstName)
}
旁注: 我可以在创建 UID 并将其添加到数据库时保存 UID,但事实是 UID 需要在运行时获取,以防用户卸载应用程序。
最佳答案
您可以执行以下操作
var idList = [String]()
CURRENT_USER_DEPENDENTS_URL.observeEventType(.Value, withBlock: { snapshot in
//print(snapshot.value)
self.dependentsJSON = snapshot.value as? [String : [String : String]]
for dependent in self.dependentsJSON{
idList.append(dependent.key)
}
}, withCancelBlock: { error in
print(error.description)
})
然后您将访问这些值
if let firstName = self.dependentsJSON?[idList[0]]?["name"] {
print(firstName)
}
关于json - 从 FireBase JSON swift 中检索自动 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37065177/