【发布时间】:2017-07-29 19:13:19
【问题描述】:
我目前正在创建一个应用程序,它将信息存储在用户设备必须具有的数据库中,以便应用程序的某些部分做出不同的响应。
我的问题是,我应该什么时候从 firebase 调用这些数据。
例如
在我的应用程序的一部分中,应用程序需要知道用户当前是否“连接”到另一位用户。目前,当用户按下需要知道此信息的选项卡栏图标时,它会根据数据库检查此信息,这需要几秒钟。 (在 viewdidload() 覆盖函数中检查)
我应该在第一个视图控制器显示之前从数据库中获取所有数据吗?
有没有办法在所有视图控制器之间共享这个? 如果我可以将数据库中的所有数据加载到设备上的所有视图控制器都可以看到的全局变量中,这似乎会容易得多,但是我不确定这是否是一种好习惯。
你会推荐什么?
基本上,现在,当用户打开应用程序并登录时,我需要存储每个用户的“姓名”和“家庭”,以便在所有类和视图控制器的整个应用程序中全局使用。
就名单而言。当用户单击列表所在的视图控制器时,目前我只是在运行这样的代码
self.ref.child("familys").child(email.replacingOccurrences(of: ".", with: "")).child("list").observe(.value, with: { (DataSnapshot) in
if DataSnapshot.hasChildren() == false{
print("No list")
return
}
self.tableList = DataSnapshot.value as! [String]
self.tableView.reloadData()
}) { (Error) in
print(Error)
}
然后它继续并使用数组“tableList”更新列表。
这意味着用户第一次点击进入购物视图时,在列表填充之前会有一些延迟。
我不确定获取此类数据的标准方法是什么,以及何时应该以最小化数据使用和数据库访问频率的方式完成。
【问题讨论】:
-
简短的回答是肯定的,将所有数据库数据加载到应用程序中是非常糟糕的做法,并且有一些创造性的方法可以解决它。如果没有更多信息,我无法为您提供更多帮助。您能否发布您如何检查用户连接以及数据库结构的代码?
-
@keverly 嗨,我已经添加了我的结构和我当前正在运行的代码的图像。任何帮助将不胜感激,我对 firebase 和 swift 非常陌生。
-
请不要张贴文字结构的图片。我们不能在不重新输入的情况下在答案中使用它们,而且它们是不可搜索的。请将它们作为 TEXT 发布,可以从 Firebase 控制台获取 -> 右侧三点 -> 导出 JSON。然后将 sn-p 复制并粘贴到您的问题中。
标签: ios swift database firebase structure