ios – 如何使用Swift从UITableViewCell中删除Firebase中的特定子节点

前端之家收集整理的这篇文章主要介绍了ios – 如何使用Swift从UITableViewCell中删除Firebase中的特定子节点前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个看起来像这个图像的UITableView

.

当我滑动删除记录时,我可以将其从存储它的数组中完全删除,但是我在Firebase中访问它时很难将其删除.

对于上面的屏幕截图,我的Firebase数据库结构如下:

-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"

如何访问创建时设置的autoId值,例如“-KWc7RTuOe5PefiMM2tL”,以便删除该子节点?

或者我可以根据登录的UserId访问exerciseName值吗?

解决方法

继MHDev已回答之后:
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)
    }
}
原文链接:https://www.f2er.com/iOS/335202.html

猜你在找的iOS相关文章