从 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 中存储数据。看看类似这样的东西。
此外,我会考虑为一天创建一个如下所示的数据模型。
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/