【问题标题】:Retrieve auto ID from FireBase JSON swift从 FireBase JSON swift 中检索自动 ID
【发布时间】:2016-09-01 02:26:51
【问题描述】:

我正在使用循环将名称上传到 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 需要在运行时获取,以防用户卸载应用程序。

【问题讨论】:

    标签: json swift firebase


    【解决方案1】:

    您可以执行以下操作

    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)
    }
    

    【讨论】:

      【解决方案2】:

      你不能这样做吗:

      var keys = Array(self.dependantsJSON.keys)
      

      自从我使用 swift 以来已经有一段时间了,但我很确定您可以从返回的快照中获取所有键并从中创建一个数组。

      【讨论】:

      • 我很惊讶我之前没有想到这一点。谢谢!
      猜你喜欢
      • 2017-05-29
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多