如何从Firebase中的每个孩子检索数据?

时间:2016-02-19 00:37:48

标签: ios swift firebase

我正在尝试检索每个帖子中的所有值(post_text,timestamp,username),以便在使用Swift的表视图中使用。我试过这段代码,但不知道从这里去哪里从帖子中获取每个值。

ref.observeEventType(.Value, withBlock: { snapshot in
        self.posts = snapshot.value.objectForKey("posts") as! [String: String]
        print(self.posts)
        self.tableView.reloadData()
})

JSON Firebase文件:



    {
      "posts" : {
        "-KAqlyZ71SNZfZ4Zbs27" : {
          "post_text" : "Hello",
          "timestamp" : 1455839242909,
          "username" : "hello"
        },
        "-KAqmD6HPbhAVkjT54-k" : {
          "post_text" : "Hi",
          "timestamp" : 1455839306600,
          "username" : "user7"
        },
        "-KAr9ATmAjObiTsn4yUC" : {
          "post_text" : "Hi",
          "timestamp" : 1455845587135,
          "username" : "user7"
        },
        "-KArIBlnKSJWGhD9Me6T" : {
          "post_text" : "Dddd",
          "timestamp" : 1455847983983
        }
      },
      "users" : {
        "5476cde6-b343-476d-abb7-8131d3766ba7" : {
          "email" : "ad@ad.com",
          "posts" : {
            "-KAm_8ShLSKrKKMhNjpm" : {
              "post_text" : "Hello :)",
              "timestamp" : 1455768771004
            }
          },
          "provider" : "password",
          "username" : "ad"
        },
        "b7b7de04-e180-4cac-abd3-57c016640e32" : {
          "email" : "user@user.com",
          "posts" : {
            "-KAqmD6HPbhAVkjT54-l" : {
              "post_text" : "Hi",
              "timestamp" : 1455839306869
            },
            "-KAr9ATq-MEkYmAr2SB_" : {
              "post_text" : "Hi",
              "timestamp" : 1455845587513
            },
            "-KArIBlxY-FvbsmgF5bI" : {
              "post_text" : "Dddd",
              "timestamp" : 1455847985342
            }
          },
          "provider" : "password",
          "username" : "user7"
        },
        "fb67da22-e0dd-4ced-873b-53a588d78feb" : {
          "email" : "hello@hi.com",
          "posts" : {
            "-KAqlyZAah6bclwqWi5M" : {
              "post_text" : "Hello",
              "timestamp" : 1455839243184
            }
          },
          "provider" : "password",
          "username" : "hello"
        }
      }
    }
    
    

我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

您可以创建一个可由Post初始化的对象Dictionary。然后,只需用他的值获取单个键。

var posts : [Post] = []()
json.forEach { (key, dictionary) -> in

    let post = Post(
        key: key, 
        dictionary: dictionary
    )

    posts.append(post)
}