如何从UITableViewCell使用Swift删除Firebase中的特定子节点 [英] How can I delete a specific child node in Firebase from UITableViewCell using Swift
问题描述
我有一个 UITableView
,它看起来像这个图像
我的Firebase数据库结构如下所示:
-KWc7RTuOe5PefiMM2tL
bodyPart:Arms
exerciseName:Test 1
userId: 8rHmyTxdocTEvk1ERiiavjMUYyD3
-KWcEbpw_f6kxcePY5cO
bodyPart:Chest
exerciseName:Test 2
userId:8rHmyTxdocTEvk1ERiiavjMUYyD3
-KWcEdUN49QaJIVf0kwO
bodyPart:腿
exerciseNameTest 3
userId:8rHmyTxdocTEvk1ERiiavjMUYyD3
-KWcFrMSaLKQRxghGHyT
bodyPart:Arms
exerciseName:Test 4
userId:8rHmyTxdocTEvk1ERiiavjMUYyD3
如何访问创建时设置的autoId值,例如-KWc7RTuOe5PefiMM2tL或者我可以根据 UserId code>登录了吗?
下面是MHDev已经回答的问题:
$ p $ func tableView(tableView:UITableView,commit editingStyle:UITableViewCellEditingStyle,forRowAt indexPath:IndexPath){
如果editingStyle == .delete {
如果让exerciseName = exercise [indexPath.row] .exerciseName {
let ref = FIRDatabase.database()。reference()。child(userExercises)
在
snapshot.ref.removeValue(completionBlock:$ {$ b $ ref.queryOrdered(byChild:exerciseName)。queryEqual(toValue:exerciseName).observe(.childAdded,with: {(错误,参考)
如果错误!= nil {
print(有错误:\(错误))
}
})
})
:b
exercise.remove(at:indexPath.row)
tableView.deleteRows(at:[indexPath],with:.left)
}
}
I have a UITableView
which looks like this image
.
When I swipe to delete the record, I can remove it perfectly okay from the array in which it is stored, but I am having difficulties in accessing it in Firebase to delete it there.
My Firebase database structure is as follows for the above screenshot:
-KWc7RTuOe5PefiMM2tL
bodyPart: "Arms"
exerciseName: "Test 1 "
userId: "8rHmyTxdocTEvk1ERiiavjMUYyD3"
-KWcEbpw_f6kxcePY5cO
bodyPart: "Chest"
exerciseName: "Test 2 "
userId: "8rHmyTxdocTEvk1ERiiavjMUYyD3"
-KWcEdUN49QaJIVf0kwO
bodyPart: "Legs"
exerciseName: "Test 3 "
userId: "8rHmyTxdocTEvk1ERiiavjMUYyD3"
-KWcFrMSaLKQRxghGHyT
bodyPart: "Arms"
exerciseName: "Test 4"
userId: "8rHmyTxdocTEvk1ERiiavjMUYyD3"
How can I access the autoId value which is set when it is created e.g "-KWc7RTuOe5PefiMM2tL" so I can remove that child node?
Or alternatively could I access the exerciseName
value depending on the UserId
that is logged in?
Following on from what MHDev has already answered:
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
if let exerciseName = exercises[indexPath.row].exerciseName {
let ref = FIRDatabase.database().reference().child("userExercises")
ref.queryOrdered(byChild: "exerciseName").queryEqual(toValue: exerciseName).observe(.childAdded, with: { (snapshot) in
snapshot.ref.removeValue(completionBlock: { (error, reference) in
if error != nil {
print("There has been an error:\(error)")
}
})
})
}
exercises.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .left)
}
}
这篇关于如何从UITableViewCell使用Swift删除Firebase中的特定子节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!