如何从UITableViewCell使用Swift删除Firebase中的特定子节点 [英] How can I delete a specific child node in Firebase from UITableViewCell using Swift

查看:162
本文介绍了如何从UITableViewCell使用Swift删除Firebase中的特定子节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆