【发布时间】:2017-10-10 13:23:27
【问题描述】:
我在 Firebase 上的结构是这样的:
(好像我还不能嵌入图片,所以他们把它做成了链接)
由于我是 Swift 新手,所以在这里我有点困惑。 显然,这项任务很简单。
我想将数据存储在用户设备上。 这样,如果新数据更新到 Firebase,设备将在登录时检索新数据,而无需用户通过 App Store 更新应用。
我已经得出结论,可以使用一系列字典,但是如何?
我的问题是价值观.. 它们似乎是一起下载的,在一个 SNAP 中,而不是部分下载。 (比如:“SNAP1: yada yada”、SNAP2: ...“等等)
我需要能够在任何时候只访问属于我想要的任何键的一个值。
这是我的代码(我知道它还不完整,但我卡住了):
func updateData() {
var dictArray: [[String:String]] = []
// Setting the refference and getting the values within a snapshot..
ref.child(REF_CATEGORIES).observeSingleEvent(of: .value, with: { (snapshot) in
if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] {
for snap in snapshots {
let categories = snap.key
let questions = snap.children.allObjects
dictArray.append([categories : String(describing: questions)])
}
}
})
}
不知何故,我也需要遍历这些值,但是:如何将它们(索引)与正确的类别合并?
我感觉它就在我的鼻子下面。可惜我的鼻子太大了,我看不到 :)
提前致谢!
【问题讨论】:
-
我想帮助你,但我需要更多信息。您可以编辑您的问题以包含数据库的数据结构吗?另外,您能否在字典数组中具体添加您想要的数据?
-
首先,您的描述有点违背 Firebase 的目的。 Firebase 是一个实时的交互式数据库;当 Firebase 中的数据发生更改时,客户端应用程序会立即知道这些更改 - 因此您不需要在本地存储数据(它确实具有持久性,但这是另一个主题)。使用 .value 读取数据会读取节点中的所有数据 - 将返回多个子节点。使用 .childAdded 一次迭代一个。从快照中获得字典后,可以通过键:值对访问各个子项。 name = dict["name"] as!以字符串为例。
-
您好 Jen,感谢您的帮助 :) 也许我误解了您,但我已经附上了结构的图像 - 它在链接中,因为我还不允许嵌入图像在这里的帖子中,由于我的菜鸟性:)
-
杰伊。我明白你在说什么。我想你是对的。我需要的是带有一个或多个“问题”的不同“类别”。用户回答的每个问题都必须从问题“池”中撤出,因为我需要它们是随机的而不是重复的。所以你告诉我的是,我的 Firebase 以这样一种方式构建,即有回答和未回答的问题,然后应用程序一起处理这些问题,以呈现我需要的方式。谢谢。我会看看这个。
-
是的。另外,请不要在问题中发布图像。仅以文本形式发布代码和 Firebase 结构。这样,它们是可搜索的、可编辑的,如果我们需要用结构回答问题,我们不必重新输入它。此外,链接会中断,这会影响问题的未来查看者。您可以从 Firebase 控制台获取您的 Firebase 结构 -> 右侧三点 -> 导出 JSON。
标签: swift dictionary firebase firebase-realtime-database