Arrays 如何从阵列中删除Firebase快照?
我有一个函数,用于侦听添加到Firebase数据库的新对象,将这些新对象附加到数组,然后使用该数组填充tableView。我不知道删除对象后如何从数组中删除它。我想我的思路是对的,但我不知道如何“撤销”追加 以下是我目前掌握的情况:Arrays 如何从阵列中删除Firebase快照?,arrays,swift,firebase,swift2,firebase-realtime-database,Arrays,Swift,Firebase,Swift2,Firebase Realtime Database,我有一个函数,用于侦听添加到Firebase数据库的新对象,将这些新对象附加到数组,然后使用该数组填充tableView。我不知道删除对象后如何从数组中删除它。我想我的思路是对的,但我不知道如何“撤销”追加 以下是我目前掌握的情况: func configureDatabase() { // Listen for new messages in the Firebase database let ref = self.rootRef.child("invites").obser
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]
}
我在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
}
我在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
}