【发布时间】:2016-09-22 06:43:01
【问题描述】:
您好,我已经学习了本教程:https://www.youtube.com/watch?v=XIQsQ2injLo
这解释了如何保存和从数据库中检索,而不是如何删除。我想知道如何删除属于正在删除的单元格的数据库节点。谢谢
【问题讨论】:
-
使用remove函数删除
标签: swift firebase firebase-realtime-database
您好,我已经学习了本教程:https://www.youtube.com/watch?v=XIQsQ2injLo
这解释了如何保存和从数据库中检索,而不是如何删除。我想知道如何删除属于正在删除的单元格的数据库节点。谢谢
【问题讨论】:
标签: swift firebase firebase-realtime-database
编辑。 Swift 3 和 Swift 4 的代码已更新。
我总是使用带有完成处理程序的删除:
static let ref = Database.database().reference()
static func remove(child: String) {
let ref = self.ref.child(child)
ref.removeValue { error, _ in
print(error)
}
}
例如,如果我想删除以下值:
我调用我的函数:remove(child: "mixcloudLinks")
如果我想更深入并删除例如“添加”:
我需要稍微改变一下功能。
static func remove(parentA: String, parentB: String, child: String) {
self.ref.child("mixcloudLinks").child(parentA).child(parentB).child(child)
ref.removeValue { error, _ in
print(error)
}
}
调用如下:
let parentA = "DDD30E1E-8478-AA4E-FF79-1A2371B70700"
let parentB = "-KSCRJGNPZrTYpjpZIRC"
let child = "added"
remove(parentA: parentA, parentB: parentB, child: child)
这只会删除“添加”的键/值
编辑
如果是 autoID,您需要将 autoID 保存到您的字典中以便以后使用。
这是我的功能之一:
func store(item: MyClassObject) {
var item = item.toJson()
let ref = self.ref.child("MyParentFolder").childByAutoId()
item["uuid"] = ref.key // here I'm saving the autoID key into the dictionary to be able to delete this item later
ref.setValue(item) { error, _ in
if let error = error {
print(error)
}
}
}
因为那时我将 autoID 作为字典的一部分,以后可以将其删除:
然后我可以像.child(MyClassObject.uuid).remove... 一样使用它,这就是自动生成的ID。
【讨论】:
我们可以将随机生成的 id 作为用户 id 存储在数据库中,然后检索删除
例如:
let key = ref?.childByAutoId().key
let post = ["uid": key,
"name": myName,
"task": myTask]
ref?.child(key!).setValue(post)
为了删除 id 的 setvalue 为 nil 例如:
var key = [string]()
ref?.child(key[indexPath.row]).setValue(nil)
key.remove(at: indexPath.row)
myArray.remove(at: indexPath.row)
myTable.reloadData()
【讨论】: