如何在 Firebase 的子级中检查子级中的数据

2024-04-28

标题可能看起来有问题,但我正在尝试弄清楚如何做到这一点。我的数据结构如下所示:

我想看看每个频道中是否都有用户。这将检查是否有通道:

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 的属性,如果是,则执行某些操作。我想要做的是循环遍历所有频道中的子级(频道)中的子级(频道中的用户)。我想检查该频道中是否有任何子频道,如果没有,请删除该频道。那么如何循环访问children通道中的children呢?我可以通过调用此函数来访问每个频道 ID:

让 id = (channelSnap as!FIRDataSnapshot).key

Edit:

这会打印出频道中没有用户:

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")
                    }
                }

Edit 2:

这是快照的打印,后面是通道快照的打印,当其中有一个用户时:

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 = "";
}

Is the KeJTqVREbMEmtD0oAk4频道内的用户?如果是的话我想有钥匙就好了users您将在其中保存有关他们的所有信息......

在下图中,example键将对应于您的频道。在里面,你会有other_info,这将是有关该频道的信息。然后,有users,这将保留频道中的所有不同用户。

Then channelSnap.child("users").value将拥有该频道中的所有用户。

您可以检查是否有用户具有以下内容:

if let dict = channelSnap.child("users").value as? [String: Any] {
   if dict.count == 0 {
      // no users
   } else {
      // you got users
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Firebase 的子级中检查子级中的数据 的相关文章

  • 如何在 Swift 中证明 String 类型的“写时复制”

    正如标题所说 我试图证明自己 Swift 中的 String 支持 COW copy on write 但我找不到证据 在尝试以下代码后 我在数组和字典上证明了 COW func address of object UnsafeRawPoi
  • 在实现文件中声明接口(Objective-C)

    在上一个版本的 xCode 4 3 中 我看到了预定义模板 例如我们的 Master Detail 模板 其中接口声明是在 m 文件中进行的 例如 在文件 MyFile h 中有 interface MyFile property nona
  • 如何查询和过滤 Firebase 实时数据库 [重复]

    这个问题在这里已经有答案了 我想从数据库中获取所有人员 其中名字和姓氏由用户输入给出 到目前为止 这是我的代码 admin database ref persons orderByChild Firstname equalTo firstN
  • 为什么这会破坏 UILabel adjustmentFontSizeToFitWidth?

    iOS 7 Xcode 5 使用 UILabel 此代码可以工作 自动调整文本大小以适应 self testLabel numberOfLines 0 self testLabel lineBreakMode NSLineBreakByWo
  • UIButton 上的圆形渐变边框

    您好 我一直在尝试在我的应用程序中实现一个 UIButton 它具有圆角和渐变边框 我使用以下代码在按钮上创建渐变边框 let gradient CAGradientLayer gradient frame CGRect origin CG
  • 从核心数据存储创建 .sqlite 文件?

    我在书籍和提供 sqlite 文件下载的网站上看到过教程 sqlite 文件用于核心数据 如何获取 sqlite 文件FROM应用程序或核心数据存储TO我的桌面 如果您要创建一个预填充的 sqlite 文件以与 Core Data 一起使用
  • 数组排序错误:“二元运算符 '<' 无法应用于两个 'Int?'操作数”

    这是按 tableView 时间戳中的每个单元格对数组进行排序的代码 self ProjectsArray sorted by project project2 gt Bool in return project timestamp int
  • NSURLSessionDownloadTask 出现存储几乎已满磁盘警告的问题

    我在使用 NSURLSessionDownloadTask 处理 ios 上的 空间不足 磁盘已满 错误时遇到问题 如果由于应用程序中完成下载而导致磁盘已满 我会接到电话 URLSession 会话 NSURLSession 任务 NSUR
  • IOS Swift 从数组中搜索表

    我刚刚开始学习 swift 我正在研究 tableview 和 searchbar 功能 下面我有我的数组 它是水果列表 var fruits String Apple Green Pear Green Banana Yellow Oran
  • 使用 Xcode 6 和(可能)cocoapods 生成错误

    在构建使用 cocoapods 和最新 Xcode 6 GM 版本的 iOS 项目时 我收到以下静态分析器错误 error error reading pic error no analyzer checkers are associate
  • SwiftUI ScrollView 只向一个方向滚动

    尝试使用视图作为列表行样式来创建自定义列表 以摆脱默认情况下列表中难看的分隔线 但是 一旦我将 ZStack 行放入滚动视图中 滚动视图就会在两个方向上滚动 而不仅仅是垂直滚动 这是内容视图 NavigationView ScrollVie
  • 推送通知需要很长时间才能到达

    我在适用于 iOS 和 Android 的 Adob e Air 应用程序中遇到推送通知的奇怪问题 我正在使用 Milkman Games 的 Easy Push ANE 以及 One Signal 服务 问题是通知确实会到达 但有时 随机
  • MPMoviePlayerController 播放 YouTube 视频

    如何在 iPhone 上的 MPMoviePlayerController 中播放 YouTube 视频 同时避免进入全屏模式 这个问题已经在这里提出 MPMoviePlayerController 正在播放 YouTube 视频吗 htt
  • xCode 7.1 中警报的 UITesting

    我正在 xCode 7 1 中编写 UITests 并且在测试警报时遇到问题 在我的情况下允许通知 创建测试时 xCode 会写入以下代码 app alerts U201cAppName U201d Would Like to Send Y
  • 协议本身不符合?

    为什么这段 Swift 代码无法编译 protocol P struct S P let arr P S extension Array where Element P func test
  • Firebase HTTP 云函数 HTTP 错误代码 403

    自 2020 年 3 月 28 日起 我的所有 HTTP 云函数都出现错误 在我上次更新之前 它们运行良好 我只更改了一些内容 在上次部署后我收到了此错误 h1 Error Forbidden h1 h2 Your client does
  • 如何将图像放在 UIButton 中文本的右侧?

    如果可以避免的话 我不想使用子视图 我想要一个UIButton其中包含背景图像 文本和图像 现在 当我这样做时 图像位于文本的左侧 背景图像 文本和图像都有不同的高亮状态 最简单的解决方案 iOS 10 及更高版本 Swift button
  • 滚动视图下的iOS swift 4 imageview:双击缩小

    我已经应用了图像视图来通过捏合来放大 缩小 那很容易 当在图像视图上应用双击时 无法检测到选择方法 我使用 Xcode 9 和 swift 4 您能告诉我滚动视图是否应该应用双击手势吗 var previewImage UIImage ni
  • 如何区分iphone4和iphone 3

    我正在尝试使用 cocos2d 引擎为 iphone 构建游戏 我想知道如何区分用户使用的是 iphone 4 还是 iphone 3 因为我想为 iphone4 加载高分辨率图形 为 iphone 3 加载低分辨率图形 我知道我是否在以下
  • NSRange 到 Range

    我怎样才能转换NSRange to Range

随机推荐