我使用循环将名称上传到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。
答案 0 :(得分:4)
您可以执行以下操作
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)
}
答案 1 :(得分:1)
你不能这样做:
var keys = Array(self.dependantsJSON.keys)
自从我使用swift已经有一段时间了,但我很确定你可以从返回的快照中获取所有键并从中创建一个数组。