【问题标题】:Swift & Firebase - Database and UserDefaultsSwift & Firebase - 数据库和用户默认值
【发布时间】:2019-05-03 10:29:31
【问题描述】:

我是 Swift 和 Firebase 的新手,我还没有真正弄清楚。目前我正在考虑添加一个数据库来存储用户在切换设备时获取的数据。

到目前为止,我已经使用UserDefaults 存储了数据。现在我可能会使用数据库,我还需要UserDefaults 吗?如果用户无法获得互联网连接并关闭应用程序,在他开始同步他的数据上线之前 - 会有数据丢失的危险吗?

或者最好同时保留UserDefaults 和数据库?

【问题讨论】:

  • UserDefaults 仅用于此目的,即用户的默认设置。您存储在 UserDefaults 中的内容(即更改 UI 颜色的切换开关的值)应该与您存储在数据库中的内容不同;他们真的不应该知道彼此。如果用户在没有连接的情况下打开应用程序并且无法连接到数据库,那么用户根本看不到数据库中的内容;为什么会有数据丢失的风险?没有尝试写入数据库,只是尝试读取它。
  • 如果您使用firebase作为数据库,那么在您的应用程序中拥有相同的东西是没有意义的,因为数据库应该有用户A和用户B的信息,但应用程序应该有只有一个用户的信息。
  • 另外,想想在现实生活中你想从互联网上下载什么和不想从互联网上下载什么。
  • 我认为应该问的一个问题是:您将哪些数据存储在 User Defaults 中,以及您希望将哪些数据存储在 Firebase 中?一旦我们知道这一点,就可以提供正确的答案。

标签: ios swift firebase


【解决方案1】:

来自 Apple 文档的 UserDefaults

用户默认数据库的接口,您可以在应用启动时在其中持久存储键值对。 https://developer.apple.com/documentation/foundation/userdefaults

UserDefaults 是在应用会话之间保持唯一值的绝佳解决方案。例如用户设置、偏好(简单、虚拟数据)。

要在 2 台设备之间共享数据,您可以使用 Firebase 存储。另一种选择是 CloudKit。

同步 - 这更多的是关于您需要什么以及您希望如何处理它。您可以基于在线数据,因此无需同步(您始终是最新的)。或者进行定期同步,但您需要考虑本地数据库的最佳解决方案。

【讨论】:

    【解决方案2】:

    这取决于你在做什么。使用用户默认值当然可以保存默认值但不能保存信息。如果两个人使用相同的设备,那么您有一个用户的用户默认值和另一个用户的数据库。我个人只会使用一个。如果您正在学习 Firebase,我建议您使用 2 个教程: https://www.youtube.com/watch?v=F42CzqIBxHQ&t=406s

    https://www.youtube.com/watch?v=RMudKhNY0sI&t=627s

    以及我刚刚回答的关于读写安全数据库的问题:User already authenticated in app and Firebase realtime database returns failed: permission_denied

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-19
      相关资源
      最近更新 更多