如何在 Swift 中从 Firebase 接收数组

Posted

技术标签:

【中文标题】如何在 Swift 中从 Firebase 接收数组【英文标题】:How to receive an array from Firebase in Swift 【发布时间】:2017-03-06 13:51:38 【问题描述】:

我在 firebase 上有一组分数和名称,我想接收该数组并将其放入一个数组中。我按照文档所说的内容结束了这个......

 databaseRef.child("Leaderboard").queryOrderedByKey().observe(.childChanged, with: 
    snapshot in 

let value = snapshot.value as? NSDictionary
//Add data to variables



但是value 被转换为字典,我有两个想要接收的数组,如何在不混合它们的情况下访问它们?

我的 Firebase 层次结构如下所示

Leaderboard
        Scores
           50
           47
           ... //Continues
        Names 
           John Doe
           BOB
           ...//Continues

【问题讨论】:

能否添加print(value)的控制台日志 当我 print(value) 我得到零,但如果我打印 snapshot.value 我得到 Optional(<__NSArrayM 0x608000248610>(John Doe, BOB // and so on)) 和分数相同的东西。 @Nirav D @fellowProgrammer 您所说的“分数相同”是什么意思?它正在打印两个可选数组? 它正在打印两个可选数组。 Name 数组看起来像我之前发布的内容,Scores 数组看起来几乎相同,只是值不同,Optional(<__NSArrayM 0x608000051d30>(178, 66 // and so on)) 你的问题解决了吗? 【参考方案1】:

为每个写一个并将其转换为Array

var yourArray = [Int]()
            if let scores = snapshot.value as? NSArray
                for i in 0..<scores.count 
                    yourArray.append(scores[i] as! Int)
                
            

Names做同样的事情

【讨论】:

我认为for i in 0..&lt;scores.count 应该是for i in 0..&lt;snapshot.childrenCount "Do the same for Names" 是什么意思我如何指定名称数组而不是分数数组@AtaerCaner 你能分享一下你的数据库结构吗?我可以为您提供更多视觉方面的帮助@fellowProgrammer 我已经在上面发布了我的数据库结构。@AtaerCaner

以上是关于如何在 Swift 中从 Firebase 接收数组的主要内容,如果未能解决你的问题,请参考以下文章

在 TableViewCell Swift 中从 Firebase 加载图像

在 Swift 中从 Firebase 检索数据的问题

在 Swift 中从 Firebase 读取现有数据一次

在 swift 4.0 中从 firebase 快照字典中获取值时打开一个可选的 nil

如何在反应原生 Firebase 动态链接中从收到的链接中提取参数?

Swift:如何在实例化 viewController 之前加载 Firebase 数据?