【发布时间】:2017-07-24 18:54:15
【问题描述】:
标题可能看起来不对,但我正在努力弄清楚如何做到这一点。我的数据结构如下所示:
我想查看每个频道中是否有用户。这将用于检查是否有频道:
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 的属性的子项,如果有,则执行操作。我想要做的是循环通过所有频道中的儿童(频道)中的儿童(频道中的用户)。我想检查频道中是否有任何孩子,如果没有,请删除该频道。那么如何循环遍历channel children中的children呢?我可以通过调用此函数访问每个频道 ID:
让 id = (channelSnap as!FIRDataSnapshot).key
编辑:
这会打印出 No user in channel:
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 = "";
}
【问题讨论】:
标签: ios swift firebase firebase-realtime-database