Firebase';s iOS离线功能与核心数据

Firebase';s iOS离线功能与核心数据,ios,firebase,Ios,Firebase,我正在开发一个小类集,它可以使您的核心数据与Firebase保持同步。但是,我最近遇到了一个问题,我注意到,关于数据持久性,在我看来,核心数据将提供类似的功能 正如我所说,我正在努力使我的核心数据与Firebase保持同步。这两者有什么区别(如果对我的情况有区别的话)?更具体地说,Firebase离线会提供类似的效果吗?我的目的是为了一个单用户应用程序,我不需要在同一个应用程序上同时支持多个用户。我需要数据持久化,以便用户可以脱机访问数据,以及在应用程序会话/重启之间访问数据 我在Firebas

我正在开发一个小类集,它可以使您的核心数据与Firebase保持同步。但是,我最近遇到了一个问题,我注意到,关于数据持久性,在我看来,核心数据将提供类似的功能


正如我所说,我正在努力使我的核心数据与Firebase保持同步。这两者有什么区别(如果对我的情况有区别的话)?更具体地说,Firebase离线会提供类似的效果吗?我的目的是为了一个单用户应用程序,我不需要在同一个应用程序上同时支持多个用户。我需要数据持久化,以便用户可以脱机访问数据,以及在应用程序会话/重启之间访问数据

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

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


如果您真的想将两者结合使用,那么在CoreData周围有一个包装器可能会很有用。然而,我发现它最终变得比实际价值更复杂。

作为另一个答案……核心数据和Firebase都可以“离线”存储数据。它们具有数据持久性,可以使代码对用户透明地脱机运行

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

此外,Firebase具有实时数据更新功能,因此,如果您需要,Firebase是实现该功能的最佳途径

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


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

我从Firebase开始,偶然发现了这两个问题,这两个问题让我又回到了CoreData:

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

  • 没有脱机附件-Firebase(实时数据库或cloudstore)没有脱机附件功能,Firebase存储也没有脱机模式,因此我需要自己实现


  • 这里的答案多少取决于项目是单用户还是多用户。i、 e.CoreData实际上是一种单用户技术——当您想与其他用户共享实时更新数据时,它不会真正发挥作用(是的,您可以推送通知,但这与实时更新不同)。另一方面,Firebase可以同时完成这两项工作——单用户或数千用户使用同一数据集。您能否更新您的问题,提供有关应用程序使用类型的更多详细信息?(单用户、多用户,为什么需要离线和在线存储)@Jay,我更新了这个问题。我们目前正在评估Firebase针对大型数据集(~20k条记录)的离线功能,但发现速度有点慢。核心数据可以更好地处理这个问题,但我们还没有尝试过,因为我们不想让整个堆栈变得太复杂。有什么消息吗?嗨,大卫,我和@Matt的情况一样,我想知道Firebase新版本与核心数据或领域中大型数据集的离线性能。有什么想法吗?我也想了解FireBase离线模式的信息。我在某个地方读到,如果应用程序离线太久,那就没那么好了。我想将Coredata同步到Firebase。这涉及到什么?可能使用脱机功能来帮助同步?