2017-03-20 75 views
2

请尽可能帮助我。当用户使用removeValue方法调用delete editingStyle函数时,我想删除tableView中的数据。到目前为止,我有一类项目:从Firebase数据库中删除子数据Swift 3

class Item : NSObject { 

    var itemName: String! 
    var itemDate: String! 
    var itemID: String! 

    init(itemName: String, itemDate: String, itemID: String) { 

     self.itemName = itemName 
     self.itemDate = itemDate 
     self.itemID = itemID 



    } 

    init(snapshot: FIRDataSnapshot) { 

     let snapshotValue = snapshot.value as? NSDictionary 

     self.itemName = snapshotValue!["itemName"] as! String 
     self.itemDate = snapshotValue!["itemDate"] as! String 
     self.itemID = snapshotValue!["itemID"] as! String 
    } 

     func toAnyObject() -> [String: AnyObject] { 
      return ["itemName": itemName as AnyObject, "itemDate": itemDate as AnyObject, "itemID": itemID as AnyObject] 
    } 


} 

现在我想删除用户ITEMID内的值,但我不知道在哪里何去何从:

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 

    guard let uid = FIRAuth.auth()?.currentUser?.uid else { 
     return 
    } 

    let item = itemArray[indexPath.row] 
    let itemID = databaseRef.child("ItemID") 

    databaseRef.child("users").child(uid).child("usersList").child(itemID).removeValue() 

回答

0

我想你再次错过了“删除”编辑风格&这个参考文件需要一点改动。试试这个:

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 

    guard let uid = FIRAuth.auth()?.currentUser?.uid else { 
     return 
    } 

    let item = items[indexPath.row] 
    let itemID = ref.child("users").child(uid).child("usersList").child("ItemID") 

    if editingStyle == .delete { 
     item.ref?.removeValue() 
    } 

} 
+0

这不起作用它说错误说“表达式类型'虚拟'(又名'()')是不明确的没有更多的上下文。 – Chace

+0

哪一行是显示的错误? @Chace – Trev14

+0

它显示在databaseRef.child的最后一行... @ Trev14 – Chace