从FireBase JSON swift中检索自动ID

时间:2016-05-06 05:48:58

标签: json swift firebase

我使用循环将名称上传到FireBase中的表,该循环使用childByAutoID()方法添加它们,如下所示:

for dependent in dependentsArray
    {
         let dependentName = dependent.text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())

         CURRENT_USER_DEPENDENTS_URL.childByAutoId().setValue(["name" : dependentName])
    }

然后在我的信息中心中显示如下:

enter image description here

然后我像这样观察依赖表:

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。

2 个答案:

答案 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已经有一段时间了,但我很确定你可以从返回的快照中获取所有键并从中创建一个数组。