arrays - 将数据从 Firebase 读取到数组中

标签 arrays swift database firebase

从 Firebase 读取快照相当简单,但将信息传输到数组则更为复杂。我有这个快照

Snap (01-08-2019) {
    Sleep = "6.25 hrs";
    "Time Uploaded" = "07:10 AM";
}
Snap (01-09-2019) {
    Sleep = "6.72 hrs";
    "Time Uploaded" = "07:19 AM";
}
Snap (01-10-2019) {
    Sleep = "6.55 hrs";
    "Time Uploaded" = "07:10 AM";
}

我如何才能为日期创建一个数组,为 sleep 创建一个数组,为上传时间创建一个数组。

最佳答案

我认为您应该重新考虑如何在 Firebase 中存储数据。看看类似这样的东西。

enter image description here

此外,我会考虑为一天创建一个如下所示的数据模型。

class Day {
    var date: String
    var sleep: String
    var timeUploaded: String

    init(date: String, sleep: String, timeUploaded: String) {
        self.date = date
        self.sleep = sleep
        self.timeUploaded = timeUploaded
    }
}

然后你就可以像这样获取快照了。

var days = [Day]()

private func fetchDays() {
    print(days.count)

    let ref = Database.database().reference().child("days")
    ref.observeSingleEvent(of: .value) { (snapshot) in
        guard let days = snapshot.value as? [String: Any] else { return }

        for (_,value) in days.enumerated() {
            guard let dayDict = value.value as? [String: String] else { return }
            let date = dayDict["date"] ?? ""
            let sleep = dayDict["sleep"] ?? ""
            let timeUploaded = dayDict["time_uploaded"] ?? ""

            //If you really want 3 different arrays just add them here
            // dateArray.append(date) and so on for the other two arrays
            let day = Day(date: date, sleep: sleep, timeUploaded: timeUploaded)
            self.days.append(day)
        }

        print(self.days.count)
    }
}
}

希望这有帮助。无法发表评论来询问您的数据是如何构建的。

关于arrays - 将数据从 Firebase 读取到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54599218/

相关文章:

linux - Bash- 将文件解析为数组

swift - 菜单栏 Extra 左键单击不打开

database - MySQL数据库表结构效率建议

ruby-on-rails - Rails 使用动态选项枚举

arrays - 如何在解析的JSON数组中添加对象?

PHP 如果 array_key_exists,变量等于数组值 : How?

c++ - Char 数组指针返回不正确(当前年份 ctime)

ios - 将 Firebase 登录转移到今天的扩展

swift - 为什么我不能在 Swift 3 中打印枚举的案例名称?

mysql - 更改数据库输出