通过observeSingleEventOfType将Firebase日期加载到UITableView并附加ChildAdded Observer

时间:2015-02-11 18:56:09

标签: ios uitableview swift firebase

我正在尝试从Firebase中加载UITableView中的数据。我正在加载的结构是:

user: {
    "simplelogin:12": 1,
    "simplelogin:13": 1,
    "simplelogin:15": 1,
    "simplelogin:17": 1
}

我想第一次加载这些数据,当加载视图时(或者当我被要求按原样出现时),我想“监听”并仅将所有新的子数据添加到UITableView的。 但是,我的数据加载了两次。我怎么能这样做?

目前,我的ViewController的主要部分是:

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        self.tableView.delegate = self
        self.tableView.dataSource = self

        // Load user
        loadFirebaseUser()
    }

 func loadFavoriteUser() {
        let firebaseRef = Firebase("http://...")

        // Add Observer on Child Added
        firebaseRef.observeEventType(.ChildAdded, withBlock: { userSnapshot in
              println("added \(userSnapshot.key)")
        })

        // Initialization
        firebaseRef.observeSingleEventOfType(.Value, withBlock: { userSnapshot in
            println("value \(userSnapshot.value)")

            self.tableView.reloadData()
        })
    }

输出

added simplelogin:12
added simplelogin:13
added simplelogin:15
added simplelogin:17
value {
    "simplelogin:12" = 1;
    "simplelogin:13" = 1;
    "simplelogin:15" = 1;
    "simplelogin:17" = 1;
}

非常感谢你的帮助

1 个答案:

答案 0 :(得分:0)

func loadFavoriteUser() {
    let firebaseRef = Firebase("http://...")

    // Add Observer on Child Added
    firebaseRef.observeEventType(.ChildAdded, withBlock: { userSnapshot in
          println("added \(userSnapshot.key)")
          self.tableView.reloadData()
    })

}