2016-06-26 13 views
0

私は、Firebaseデータベースに追加された新しいオブジェクトをリスンし、それらの新しいオブジェクトを配列に追加し、その配列を使ってtableViewを生成する関数を持っています。一度オブジェクトが削除されると、アレイからオブジェクトを削除する方法を理解できません。私は正しい軌道にいると思うが、私はどのように「元に戻す」かわからない。アレイからFirebaseスナップショットを削除するには?

func configureDatabase() { 

    // Listen for new messages in the Firebase database 
    let ref = self.rootRef.child("invites").observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in 

    self.invites.append(snapshot) 
    self.tableView.insertRowsAtIndexPaths([NSIndexPath(forRow: self.invites.count-1, inSection: 0)], withRowAnimation: .Automatic) 
    }) 

    //listen for deleted messages in Firebase database 
    let ref2 = self.rootRef.child("invites").observeEventType(.ChildRemoved, withBlock: { (snapshot) -> Void in 

    //remove from invites array and refresh table?? 
    }) 
} 

が、私はテーブル内の実際のセルから値を渡す必要はありません。ここで

は、私がこれまで持っている何ですか?

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("AlertCell", forIndexPath: indexPath) as! AlertCell 

     //get user, set cell text 
     let inviteDict = invites[indexPath.row].value as! [String : AnyObject] 
} 

答えて

3

私はFirebaseウェブサイト上のサンプルコードで答えを見つけました:

// Listen for deleted comments in the Firebase database 
    commentsRef.observeEventType(.ChildRemoved, withBlock: { (snapshot) -> Void in 
     let index = self.indexOfMessage(snapshot) 
     self.comments.removeAtIndex(index) 
     self.tableView.deleteRowsAtIndexPaths([NSIndexPath(forRow: index, inSection: 1)], withRowAnimation: UITableViewRowAnimation.Automatic) 
    }) 

func indexOfMessage(snapshot: FIRDataSnapshot) -> Int { 
    var index = 0 
    for comment in self.comments { 
     if (snapshot.key == comment.key) { 
     return index 
     } 
     index += 1 
    } 
    return -1 
    } 
関連する問題