Swift 如何存储来自Firebase的数据,每个键有多个值?

Swift 如何存储来自Firebase的数据,每个键有多个值?,swift,dictionary,firebase,firebase-realtime-database,Swift,Dictionary,Firebase,Firebase Realtime Database,我在Firebase上的结构如下: (似乎我还不允许嵌入图片,所以他们将其改为链接) 由于我是斯威夫特的新手,我在这里有点困惑。 显然,为了这项简单的任务,我一直在兜圈子 我想将数据存储在用户设备上。 这样,如果新数据更新到Firebase,设备将在登录时检索新数据,而不让用户通过app Store更新应用程序 我已经得出结论,一系列字典将是一条出路,但如何 我的问题是价值观。。 它们似乎是一起下载的,在一个快照中,而不是部分下载。(比如:“SNAP1:yada-yada”,SNAP2:…”等

我在Firebase上的结构如下:

(似乎我还不允许嵌入图片,所以他们将其改为链接)

由于我是斯威夫特的新手,我在这里有点困惑。 显然,为了这项简单的任务,我一直在兜圈子

我想将数据存储在用户设备上。 这样,如果新数据更新到Firebase,设备将在登录时检索新数据,而不让用户通过app Store更新应用程序

我已经得出结论,一系列字典将是一条出路,但如何

我的问题是价值观。。 它们似乎是一起下载的,在一个快照中,而不是部分下载。(比如:“SNAP1:yada-yada”,SNAP2:…”等等)

我需要能够在任何时候访问属于我想要的任何键的一个值

这是我的代码(我知道它还没有完成,但我被卡住了):

不知何故,我也需要遍历这些值,但是:如何将它们(索引)与正确的类别合并

我觉得它就在我的鼻子底下……糟糕的是,我的鼻子太大了,我看不见:)


提前感谢!

由于Firebase数据库是基于键值的,您可以通过给每个值一个简单的数字键来大致实现您想要的。例如:

"Key1": {
   "0":"value1",
   "1":"value2",
   "2":"value3"
}
然后,在检索数据时,您可以轻松地将其解析为数组


有趣的事实:如果你是“数字”(它们实际上不是数字,而是字符串)Firebase数据库将以这种方式显示您的密钥,它们总是以键值形式显示给我们。

我很想帮助您,但我需要更多的信息。您可以编辑您的问题以包括数据库的数据结构吗?另外,您可以在字典数组中添加您想要的数据吗?首先,您的d描述有点违背了Firebase的目的。Firebase是一个实时的交互式数据库;当数据在Firebase中更改时,客户端应用程序立即知道这些更改-因此您不需要将数据存储在本地(它确实具有持久性,但这是另一个主题).Reading data with.value读取节点中的所有数据-将返回多个子节点。使用.childAdded一次迭代一个。从快照中获得字典后,可以通过key:value对访问单个子节点。name=dict[“name”]比如说!字符串。嗨,Jen,谢谢你的帮助:)也许我误解了你,但我已经附上了这个结构的图片-它在一个链接中,因为我还不允许在这里嵌入图片,因为我是新手:)Jay。我明白你在说什么。我想你是对的。我需要的是不同的具有一个或多个“问题”的nt“类别”。以及用户回答的每个问题,必须从“池”中撤回“问题,因为我需要它们是随机的,不要重复。所以你要告诉我的是,以这样一种方式构建我的Firebase,即有回答的和未回答的问题,然后应用程序一起处理,以我需要的方式呈现。谢谢我会调查一下的,是的。另外,请不要在问题中张贴图片。仅以文本形式发布代码和Firebase结构。这样,它们是可搜索、可编辑的,如果我们需要用结构回答问题,我们就不必重新键入。此外,链接断开会影响该问题的未来观众。您可以从Firebase控制台->右侧三点->导出JSON获取Firebase结构。这是不正确的。Firebase将其数据存储为JSON,而不是数组(即使在引擎盖下)。另外,如果您依赖于排序,那么使用这样的键会给您带来麻烦,因为假设您需要“插入”一个介于1和2之间的值?使用1.5是行不通的。最好利用子节点来处理排序,例如索引或日期。@Jay您认为这不是存储列表的最优雅的方式,但这正是OP所要求的。另请看。根据评论,我认为这个答案行不通。我可能错了。然而,你文章中的链接并没有显示Firebase数据是以数组形式存储在引擎盖下的。它将实际的Firebase数组显示为一个值,该值作为JSON存储在引擎盖下。这是一个重要的概念,因为Firebase中的数组存储为单个值,不能编辑或添加到其中,也不能删除单个元素。通常应该避免使用它们。@Jay是的,你是对的,我认为它们在导出时以数组的形式显示它只是一件方便的事情!
"Key1": {
   "0":"value1",
   "1":"value2",
   "2":"value3"
}