【问题标题】:Firebase's iOS Offline Capabilities vs Core DataFirebase 的 iOS 离线功能与核心数据
【发布时间】:2015-11-22 00:23:35
【问题描述】:

我正在开发一小组类,它们可以让您的核心数据与 Firebase 保持同步变得容易。但是,我最近遇到了Firebase's iOS Offline Capabilities,我注意到,关于数据持久性,这听起来像是 Core Data 将提供的类似功能。

正如我所说,我正在努力让我的核心数据轻松地与我的 Firebase 保持同步。两者有什么不同(如果我的情况有区别的话)?更具体地说,Firebase 离线会提供类似的效果吗?我的意图是针对单用户应用程序,我不需要在同一个应用程序上同时支持多个用户。我需要保留数据,以便用户可以离线访问他们的数据,以及在应用会话/重新启动之间访问他们的数据。

【问题讨论】:

  • 这里的答案在某种程度上取决于项目是单用户还是多用户。也就是说,CoreData 确实是一种单用户技术 - 当您想与其他用户共享实时更新数据时,它并没有真正发挥作用(是的,您可以推送通知,但这与实时更新不同)。另一方面,Firebase 可以两者兼得——单个用户或数千名用户使用相同的数据集。您能否更新您的问题,详细说明您的应用的使用类型? (单用户,多用户,为什么需要离线和在线存储)
  • @Jay,我更新了问题。

标签: ios firebase


【解决方案1】:

我在 Firebase 工作,我曾经尝试做同样的事情。

Firebase 的离线功能使得使用 CoreData 有点多余。 Firebase 的离线处理了很多复杂的问题,比如处理离线身份验证和长时间离线后的同步。

如果您真的想同时使用这两者,那么对 CoreData 进行包装可能会很有用。然而,我发现它最终变得比它真正的价值更复杂。

【讨论】:

  • 我们目前正在评估大型数据集(约 2 万条记录)的 Firebase 离线功能,发现速度有些慢。 Core Data 可能会更好地处理这个问题,但我们还没有尝试过,因为我们不想让整个堆栈变得太复杂。有什么消息吗?
  • 嗨,David,我和@Matt 的情况一样,我想知道新 Firebase 版本中大型数据集与 Core Data 或 Realm 的离线性能。有什么想法吗?
  • 我还想了解有关 FireBase 离线模式的信息。我在某处读到,如果应用程序离线时间过长,情况就不妙了。我想将 Coredata 同步到 Firebase。这涉及什么?也许使用离线功能来帮助同步?
【解决方案2】:

作为附加答案...Core Data 和 Firebase 都可以“离线”存储数据。它们具有数据持久性,并使您的代码能够对用户透明地离线运行。

为了深入挖掘,Core Data 没有“在线模式”*(内置),而一旦 Firebase 建立连接 - wham-o,您的所有离线数据现在都在线。 (*CloudKit 为 CoreData 提供了在线性)

此外,Firebase 具有实时数据更新功能,因此如果您需要,Firebase 就是实现该功能的方法。

因此,正如 David 所提到的,对于您的用例,您正在以多种方式复制离线功能 - 特别是如果这是一个仅供单个用户使用的情况。

如果您已经让 CoreData 和 CloudKit 工作,那么将 Firebase 循环到项目中可能不值得花时间 - 这实际上取决于您正在构建的类的范围。

【讨论】:

    【解决方案3】:

    我从 Firebase 开始,偶然发现这两个问题让我切换回 CoreData:

    1. 没有离线搜索 - Firebase(在线或离线)搜索非常有限,他们建议使用像 Aglolia 这样的第三方服务,这需要另一个订阅、另一个离线模式、另一个身份验证等。CoreData 只支持通过搜索类似 SQL 的语言,而且很简单。

    2. 没有离线附件 - Firebase(实时数据库或云存储)没有离线附件功能,而且 Firebase 存储也没有离线模式,所以我需要自己实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 2015-12-21
      • 2021-11-25
      • 2016-04-01
      相关资源
      最近更新 更多