Ios 在tableViewCell上列出firebase子节点时删除值
我试图在表视图中列出firebase节点中的所有用户(此操作正常),但希望从列表中删除当前用户(此操作不正常) 我尝试过使用removeValue(),但它仍然与表视图上的当前用户一起运行-而且我不想从firebase中删除该用户 然后,我尝试使其仅在用户autoId不等于当前用户Id但仍显示在表视图单元格中时运行 如有任何帮助,将不胜感激:) 我的firebase结构如下所示:Ios 在tableViewCell上列出firebase子节点时删除值,ios,swift,firebase,uitableview,firebase-realtime-database,Ios,Swift,Firebase,Uitableview,Firebase Realtime Database,我试图在表视图中列出firebase节点中的所有用户(此操作正常),但希望从列表中删除当前用户(此操作不正常) 我尝试过使用removeValue(),但它仍然与表视图上的当前用户一起运行-而且我不想从firebase中删除该用户 然后,我尝试使其仅在用户autoId不等于当前用户Id但仍显示在表视图单元格中时运行 如有任何帮助,将不胜感激:) 我的firebase结构如下所示: "users" : { "8x1SGi2P0KVOKm4i60JQLP1bdU63" : { "fu
"users" : {
"8x1SGi2P0KVOKm4i60JQLP1bdU63" : {
"fullname" : "bbbb",
"profileImageUrl" : "https://firebasestorage.googleapis.com/v0/b/pinion-4896b.appspot.com/o/profile_image%2F8x1SGi2P0KVOKm4i60JQLP1bdU63?alt=media&token=7932b14f-c2d8-46fd-9dd1-c607217fe8d3",
},
"B7rwHiCTlphZjKXfPSEzkIwl8RH2" : {
"fullname" : "Aaaa ",
"profileImageUrl" : "https://firebasestorage.googleapis.com/v0/b/pinion-4896b.appspot.com/o/profile_image%2FB7rwHiCTlphZjKXfPSEzkIwl8RH2?alt=media&token=072e1f41-935e-430d-af99-dc640381f8e6",
},
"FRuuk20CHrhNlYIBmgN4TTz3Cxn1" : {
"fullname" : "eeee",
"profileImageUrl" : "https://firebasestorage.googleapis.com/v0/b/pinion-4896b.appspot.com/o/profile_image%2FFRuuk20CHrhNlYIBmgN4TTz3Cxn1?alt=media&token=bf89b903-a51a-4d6d-bdef-fe2667d78842",
},
列出用户的代码:
func observeUsers(completion: @escaping (UserModel) -> Void) {
REF_USERS.observeSingleEvent(of: .childAdded, with: { snapshot in
if let dict = snapshot.value as? [String: Any] {
let user = UserModel.transformUser(dict: dict, key: snapshot.key)
//line below used first to remove value from listing on table view
//Api.User.REF_USERS.child("users").child(Api.User.CURRENT_USER!.uid).removeValue()
//line below - if user autoID is not equal to the current user then list
if user.id != Api.User.CURRENT_USER?.uid {
completion(user)
}
}
})
}
编辑:
不要删除,而是尝试此选项 创建tabledata的模型 然后创建一个空数组 提取数据时,附加除具有相同currentuser.uid的数据以外的所有数据 然后重新加载tableview,这将显示除当前用户之外的所有数据 这是承诺的代码: 但这需要对数据库进行一些修改 使您的数据库如下所示 “用户”:{ “childbyautid”:{ “全名”:“全名”, “profileimageurl”:“您的url”, “userid”:“userid” } 那你就可以这样写了
var myArr = [String]()
Database.database().reference.child("users").observe(.value){(snapshot) in
if snapshot.childcount > 1 { self.myArr.removeAll()
for data in snapshot.children.allObjects as! [DataSnapshot]{
if let d = data.value as? [string: any]{
if Auth.auth.currentuser.uid != d["userid"]{
myArr.append(d["name"]}else{print("this is the user itself"}}}
不要删除,而是尝试此选项 创建tabledata的模型 然后创建一个空数组 提取数据时,附加除具有相同currentuser.uid的数据以外的所有数据 然后重新加载tableview,这将显示除当前用户之外的所有数据 这是承诺的代码: 但这需要对数据库进行一些修改 使您的数据库如下所示 “用户”:{ “childbyautid”:{ “全名”:“全名”, “profileimageurl”:“您的url”, “userid”:“userid” } 那你就可以这样写了
var myArr = [String]()
Database.database().reference.child("users").observe(.value){(snapshot) in
if snapshot.childcount > 1 { self.myArr.removeAll()
for data in snapshot.children.allObjects as! [DataSnapshot]{
if let d = data.value as? [string: any]{
if Auth.auth.currentuser.uid != d["userid"]{
myArr.append(d["name"]}else{print("this is the user itself"}}}
您可以在loadUsers中通过添加用户ID检查来控制这一点,如下所示
func loadUsers() {
var allUsers = [String]()
Api.User.REF_USERS.observe(.value, with: { snapshot in
for child in snapshot.children { //build the array of keys
let snap = child as! DataSnapshot
let key = snap.key
if key != currentUser.id{
allUsers.append(key)
}
print(allUsers)
}
})
}
您可以在loadUsers中通过添加用户ID检查来控制这一点,如下所示
func loadUsers() {
var allUsers = [String]()
Api.User.REF_USERS.observe(.value, with: { snapshot in
for child in snapshot.children { //build the array of keys
let snap = child as! DataSnapshot
let key = snap.key
if key != currentUser.id{
allUsers.append(key)
}
print(allUsers)
}
})
}
谢谢你的回复!我添加了一个编辑来显示如何创建一个数组并向其中添加所有用户-你知道如何阻止当前用户在追加其他用户时被追加吗?我假设你得到的密钥是你得到的用户ID,如下所示:在追加到数组之前,让x=Auth.Auth.currentuser.uid使用if-else块来检查key==x是否为continue,如果需要,不附加其他附加到数组中我可以明天给你代码谢谢你的回复!我添加了一个编辑来显示创建数组并将所有用户添加到数组中-你知道如何阻止当前用户在附加其他所有用户时被附加吗?我假设您得到的密钥是这样得到的userid让x=Auth.Auth.currentuser.uid在附加到数组之前使用if-else块检查key=x是否为continue,如果需要,请不要附加到数组中我可以明天给您代码