2017-03-20 117 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