我想将我所有被阻止的用户子项保存为我的代码中的字符串。但听起来很简单,我无法弄明白。
static func block(myself: String, posterUID: String){
var blockedUserRef = Database.database().reference().child("users").child(myself).child("blockedUsers").child(posterUID)
blockedUserRef.setValue(true)
var blokedArray:[String] = []
var handle:DatabaseHandle!
blockedUserRef = Database.database().reference()
handle = blockedUserRef.child("blockedUsers").observe(.childAdded, with:{ (DataSnapshot) in
if let item = DataSnapshot.value as? String{
blokedArray.append(item)
}
})
}
我想让我的被阻止用户的数组进入for循环并从显示中过滤掉它们。
ref.observeSingleEvent(of: .value, with: { (snapshot) in
guard let snapshot = snapshot.children.allObjects as? [DataSnapshot]
else { return completion([]) }
// 3 filter the user from the array
let users =
snapshot
.flatMap(User.init)
.filter { $0.uid != currentUser.uid }
这是我的火力基地:
"users" : {
"3YLVUDA8YnSuVYUTxv6cvOQPSjm1" : {
"username" : ""
},
"4duY2hhTv5S7sSXtZYBfiP7JBLz1" : {
"username" : "Love from NYC"
},
"58t0M2Fxxhg6GRT96vVbKMFHRKO2" : {
"blockedUsers" : {
"4duY2hhTv5S7sSXtZYBfiP7JBLz1" : true,
"SqarOdPJUydcdV6deXTeIdzkarE2" : true
},
"username" : "IStandWithYou"
},
我尝试的一些新方法我调试了它,它似乎没有将它保存到数组
///adedblock
var blockedUserRef = Database.database().reference().child("users").child(currentUser.uid).child("blockedUsers")
var blokedArray:[String] = []
var handle:DatabaseHandle!
blockedUserRef = Database.database().reference()
handle = blockedUserRef.child("blockedUsers").observe(.childAdded, with:{ (DataSnapshot) in
if let item = DataSnapshot.value as? String{
blokedArray.append(item)
}
})
for user in blokedArray{
let users =
snapshot
.flatMap(User.init)
.filter { $0.uid != user }
}
答案 0 :(得分:0)
这可以通过将blockedUsers的所有子条目保存到一个包含所有字符串的数组来完成。
为此,首先要创建一个像
这样的空数组myList:[string] = []
然后,您需要创建对Firebase数据库的引用,如:
var ref: DatabaseReference!
您还需要一个数据库句柄来浏览数据库:
var handle:DatabaseHandle!
现在,您需要转到ViewDidLoad函数并添加如下代码:
ref = Database.database().reference()
handle = ref?.child("blockedUsers").observe(.childAdded, with:{ (DataSnapshot) in
if let item = DataSnapshot.value as? String{
self.myList.append(item)
}
})
这段代码正在检查一个条目是否被添加到子数据库" blockedUsers",并且从中,它正在添加刚刚输入到阵列中的任何内容。
现在,你有一个数组填充了子数据库中的所有内容,blockedUsers。您现在可以在UITableView中使用该数组,或将其列在标签中。
希望这有帮助!