标题可能看起来不对,但我正在试图弄清楚如何做到这一点。我的数据结构如下所示:
我想查看每个频道是否有用户。这将检查是否有频道:
channelRef.observeSingleEvent(of: .value, with: { (snapshot) -> Void in
for channelSnap in snapshot.children {
let channelData = (channelSnap as! FIRDataSnapshot).value as! Dictionary<String, AnyObject>
if let name = channelData["name"] as! String!, name.characters.count > 0 {
}
})
这当然会检查是否有一个名为name的属性的孩子,如果有的话,做一些事情。我想要做的是在所有频道中循环播放孩子(频道中的用户)的孩子(频道)。我想检查频道中是否有孩子,如果没有,请删除该频道。那么如何在孩子们的频道中循环?我可以通过调用此函数来访问每个通道ID:
让id =(channelSnap as!FIRDataSnapshot).key
编辑:
这会在频道中打印出无用户:
channelRef.observeSingleEvent(of: .value, with: { (snapshot) -> Void in
for channelSnap in snapshot.children {
for child in (channelSnap as AnyObject).children {
let usersData = (child as! FIRDataSnapshot).value as? Dictionary<String, AnyObject>
if let randomUser = usersData?["userID"] as! String!{
print("user in the channel")
}
else
{
print("no user in channel")
}
}
编辑2:
这是快照的打印,然后打印channelSnap,,同时有一个用户:
SNAPSHOT: Snap (channels) {
"-KePh6YFmQqQ6ZhEfTHn" = {
"-KePh6YHPLSAIEARfj-i" = {
PictureVersion = 2;
readyToGo = 0;
userID = SZlQ76RLCJQpFa0CDhrgFJoYzrs2;
username = pietje;
};
creator = SZlQ76RLCJQpFa0CDhrgFJoYzrs2;
currentPlayers = 1;
entryFee = 100;
gameType = normal;
maximumPlayers = 4;
name = "random channel";
password = "";
};
}
CHANNELSNAP: Snap (-KePh6YFmQqQ6ZhEfTHn) {
"-KePh6YHPLSAIEARfj-i" = {
PictureVersion = 2;
readyToGo = 0;
userID = SZlQ76RLCJQpFa0CDhrgFJoYzrs2;
username = pietje;
};
creator = SZlQ76RLCJQpFa0CDhrgFJoYzrs2;
currentPlayers = 1;
entryFee = 100;
gameType = normal;
maximumPlayers = 4;
name = "random channel";
password = "";
}
答案 0 :(得分:1)
KeJTqVREbMEmtD0oAk4
用户是否在频道内?如果是这样的话,我认为拥有一个关键users
可以保留关于它们的所有信息......
在下图中,example
键与您的频道相对应。在它里面,你有other_info
,这将是关于该频道的信息。然后,有users
,它将保留频道中的所有不同用户。
然后channelSnap.child("users").value
将拥有该频道中的所有用户。
您可以检查是否存在类似以下内容的用户:
if let dict = channelSnap.child("users").value as? [String: Any] {
if dict.count == 0 {
// no users
} else {
// you got users
}
}
答案 1 :(得分:1)
要捕获数据将是这样的:
a2b: e8 1a 01 00 00 call b4a <_ZN4Base4setxEi> ; A call to setx()
a30: 48 8d 45 e0 lea rax,[rbp-0x20]
a34: be 04 00 00 00 mov esi,0x4
a39: 48 89 c7 mov rdi,rax
a3c: e8 33 01 00 00 call b74 <_ZN4Base4setyEi> ; A call to sety()
a41: 48 8d 45 e0 lea rax,[rbp-0x20]
a45: 48 89 c7 mov rdi,rax
a48: e8 15 01 00 00 call b62 <_ZNK4Base4getyEv> ; A call to gety()
a4d: 89 c3 mov ebx,eax
a4f: 48 8d 45 e0 lea rax,[rbp-0x20]
a53: 48 89 c7 mov rdi,rax
a56: e8 df 00 00 00 call b3a <_ZNK4Base4getxEv> ; A call to getx()