【问题标题】:Storing data from firebase child key value pairs as an array将来自 firebase 子键值对的数据存储为数组
【发布时间】:2017-01-25 16:29:48
【问题描述】:

如何将 firebase 中的键值对存储到数组中?我尝试编写代码以将一些数据从本地数组发送到 firebase,并注意到它们以这种形式存储:

注意“奖牌”子项的存储方式。

我正在尝试从“奖牌”对象中获取数组的快照,并将其作为数组快速返回。

let databaseRef = FIRDatabase.database().reference()
        databaseRef.child("users").child(userID!).observeSingleEventOfType(.Value, withBlock: { (snapshot) in
            // Get user medals
            self.identities3 = snapshot.value!["medals"] as! [String]

        })

我知道这很粗糙,但它会起作用吗?

谢谢!对 firebase 和学习来说还是很新的 :)

【问题讨论】:

  • 这应该可以,你测试过它是否可以吗?
  • 是的,我将它设置为在日志中打印,它显示了一个空数组 []
  • 在这种情况下,最好的办法是使用 Dravidian 提供的以下代码。它可以立即解决您的问题,也是一种更安全的数据结构化方式。
  • 谢谢,还在努力。但是仍然存在一些错误。并且使用这种方法将来可能不容易将数据保存到数据库中。
  • 您在问题中包含了 JSON 树的图片。请将其替换为实际的 JSON 作为文本,您可以通过单击 Firebase 数据库控制台中的导出按钮轻松获取该文本。将 JSON 作为文本使其可搜索,让我们可以轻松地使用它来测试您的实际数据并在我们的答案中使用它,总的来说这只是一件好事。

标签: swift firebase firebase-realtime-database


【解决方案1】:

试试这个:

let databaseRef = FIRDatabase.database().reference()
    databaseRef.child("users").child(userID!).child("medals").observeSingleEventOfType(.Value, withBlock: { (snapshot) in
        // Get user medals
        self.identities3 = snapshot.value as! [String]

    })

【讨论】:

  • 是的,成功了!实际上,我也想测试一下,但你先来找我:P 谢谢!
【解决方案2】:

考虑将您的 JSON 结构更改为:-

Medals: {
       Shield : true,
       Tie : true 
      }

要检索:-

斯威夫特 3

  let array = [String]()
   FIRDatabase.database().reference().child("users")child(FIRAuth.auth()!.currentUser!.uid).child("medals").observeSingleEvent(of: .value, with: {(snap) in


        if let snapDict = snap.value as? [String:AnyObject]{


            for each in snapDict{

                print(each.key)
                self.array.append(each.key)
            }
        }
    })

斯威夫特 2

  let array = [String]()
   FIRDatabase.database().reference().child("users")child(FIRAuth.auth()!.currentUser!.uid).child("medals").observeSingleOfEvent(.Value, withBlock: {(snap) in


        if let snapDict = snap.value as? [String:AnyObject]{


            for each in snapDict{

                print(each.0)
                self.array.append(each.0)
            }
        }
    })

【讨论】:

  • 它表示元组类型(String,AnyObject)的值没有成员'key'
  • 我已经更新了我的答案。 Swift 语法刚刚改变...仍在调整..:)
  • 好吧,这很硬核。有十几种不同的方法可以做到这一点。每个人都在告诉我一些不同的事情。您应该为 Google 编写文档。 :-) 我可以请您参考我的问题吗?不要认为我需要 swiftyJSON,但显示了结构。其他解决方案(swift3)最受欢迎。谢谢! :-) stackoverflow.com/questions/39851347/…
猜你喜欢
  • 2017-10-10
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-03
  • 2018-04-05
  • 2017-04-03
相关资源
最近更新 更多