gpt4 book ai didi

swift - 使用 Swift 处理 Firestore 上的对象字段

转载 作者:行者123 更新时间:2023-11-30 11:40:17 25 4
gpt4 key购买 nike

我正在使用 Firebase Firestore 来保存我的应用的数据。我有一个对象的对象作为我的文档之一的字段,它看起来像这样:

it looks like this

于是就有了语言对象,它有字段记录(Int)和字段日常(Object)。问题在于添加新数据。

我找到了使用 SwiftJson 解析数据的方法。

let docRef = db.collection("users").document(uid).collection("activities").document(uid)

docRef.getDocument { (qs, err) in
if let err = err {
print("Error retrieving document \(err.localizedDescription)")

} else {
if let document = qs {
let doc = document.data()

SVProgressHUD.dismiss()

do {
let json = try JSON(doc)

for i in 0..<json["language"]["daily"].count {
print(json["language"]["daily"]["\(i + 1)"]["date"])
print(json["language"]["daily"]["\(i + 1)"]["points"])

}

} catch {

}

}
}
}

该计划每天都会保存您生成的积分,这就是我拥有这个对象的原因。因此,问题是“每天”向对象添加新值。你将如何做?或者你想出另一种方法吗?

最佳答案

在大多数 NoSQL 数据库中,解决用例的关键是找到一个有效的模型来存储数据。

就您而言,您似乎想存储每个数据的点数。似乎每个日期只能获得一个积分。

在这种情况下,使用日期作为存储点数的键是最有意义的。因此,在您的示例文档中:

language: {
daily: {
"2018-03-17": 1200,
"2018-03-18": 1250
},
record: 1120
}

我所做的改变(以及原因):

  • 通过使用日期作为每日高分的关键,根据定义,数据模型每天只能有一个值。查找特定日期的高分也变得更加容易,因为一旦知道日期,您就可以确定到达该字段的直接路径,而不必循环遍历所有日报。
  • 我使用ISO-8601 format日期,这确保可以更轻松地对它们进行排序和过滤。

关于swift - 使用 Swift 处理 Firestore 上的对象字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49352818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com