数据在 Firebase 中的保存顺序与 SwiftUI 的传输顺序不同

Posted

技术标签:

【中文标题】数据在 Firebase 中的保存顺序与 SwiftUI 的传输顺序不同【英文标题】:Data is saved in Firebase in a different order than it is transferred SwiftUI 【发布时间】:2020-09-02 13:01:13 【问题描述】:

我在应用程序中将数据保存到 Firestore。在代码中,它看起来像这样:

db.collection("flowers")
                        .document()
                        .setData(["Name":self.flowerName,
                                  "Cup width":self.cupWidth,
                                  "Cup height":self.cupHeight,
                                  "Stem length":self.stemLength,
                                  "Leaf width":self.leafWidth,
                                  "Leaf length":self.leafLength])

但在 Firestore 中它看起来像这样:

Cup height: "1"
Cup width: "1"
Leaf length: "1"
Leaf width: "1"
Name: "Rose"
Stem length: "1"

我希望它们以与在应用程序中传输相同的方式保存在数据库中。我猜它们在数据库中按字母顺序排序,但可以更改吗?我在文档中查找了任何信息,但没有找到任何信息。

【问题讨论】:

你使用字典,它是无序容器。 为什么要它们以特定顺序保存在数据库中?阅读时,您可以按您喜欢的任何顺序访问这些字段。控制台按字典顺序显示所有数据,正如@frankvanpuffelen 在他的回答中提到的那样,也正如你提到的那样,但这似乎不是你要问的。如果您能澄清您的要求,我们或许可以提供解决方案。 【参考方案1】:

Firestore 以 JSON 格式存储数据,根据定义,这种格式是无序的。因此,您将字段传递到数据库的顺序不会影响它们的存储顺序。

Firebase 控制台按字母顺序显示字段,但我不确定这是否得到保证。

当然,您可以按要求的顺序在应用的 UI 中显示它们。

【讨论】:

以上是关于数据在 Firebase 中的保存顺序与 SwiftUI 的传输顺序不同的主要内容,如果未能解决你的问题,请参考以下文章

Unity 中的 Firebase - 禁用持久性

无法从 firebase 中的文本字段表单中保存数据

本地写入是不是以与生成的顺序相同的顺序提交到 firebase

如何在 Swift 中保存实时 Firebase 数据库中的数据?

如何将查询中的数据保存在字符串数组中,Firebase iOS?

Firebase 实时数据库不保存注册页面中的数据