如何在swift中解析Firebase FDatasnapshot json数据

kan*_*aku 5 json ios firebase swift

我在从Firebase获取数据时遇到问题.

架构是

{
    title: "dog",
    images: {
        main: "dog.png",
        others: {
            0: "1.png",
            1: "2.png",
            2: "3.png"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何解析FDataSnapshot快速模型?

Jay*_*Jay 5

Firebase 是一个 NoSQL JSON 数据库,没有架构和表。数据以带有节点的“树”结构存储;父母和孩子。

您无需解析 Firebase JSON 数据即可访问它,您可以直接访问它。

FDataSnapshots 包含一个 .key,它是 Firebase 和 .value 中的父键。.Value 可以包含一个节点,也可以包含多个节点。值将具有表示快照中数据的键:值对

因此,对于您的示例,您将拥有这样的 Firebase 结构

dogs
  dog_id_0
    title: "dog"
    type: "Alaskan Malamute"
    images:
        main: "dog.png"
        others:
            0: "1.png"
            1: "2.png"
  dog_id_1
    title: "another dog"
    type: "Boxer"
    images:
        main: "another_dog.png"
        others:
            0: "3.png"
            1: "4.png"
Run Code Online (Sandbox Code Playgroud)

因此,假设您想一次读取每个 dog_id_x 节点并打印一些值。

var ref = Firebase(url:"https://your-app.firebaseio.com/dogs")

ref.observeEventType(.ChildAdded, withBlock: { snapshot in
    println(snapshot.value.objectForKey("title"))
    println(snapshot.value.objectForKey("type"))
})
Run Code Online (Sandbox Code Playgroud)

这将输出

dog
Alaskan Malamute
another dog
Boxer
Run Code Online (Sandbox Code Playgroud)

dog_id_0 和 dog_id_1 是使用 Firebase childByAutoId 创建的节点名称。

您可以轻松地创建一个 Dog 类,并将 FDataSnapshot 传递给它,该 FDataSnapshot 将从快照中的数据填充该类。