如果使用 CoreData,我需要缓存吗

Posted

技术标签:

【中文标题】如果使用 CoreData,我需要缓存吗【英文标题】:Do I need cache if using CoreData 【发布时间】:2017-01-17 10:30:19 【问题描述】:

首先我是 ios/swift 的新手...

我的应用需要离线模式。

我将 Alamofire 用于所有网络获取 json、转换为对象并保存到数据库(核心数据)中。想知道在没有互联网连接或从 CoreData 获取的情况下,我是否需要在两者之间添加额外的缓存(例如:Haneke 或 DataCache)?

数据库请求是否足够快/方便?

【问题讨论】:

我可以使用 CoreData。够了 Cache Webservice data into core data的可能重复 【参考方案1】:

CoreData 非常快(如果使用正确)。我认为不需要额外的缓存层。

这只是您已经存储在数据库中的数据的重复。

顺便说一句,这一切都取决于您的项目用例。如果我的应用必须在没有互联网连接的情况下运行,我不会依赖临时缓存的数据。

让您了解核心数据性能,以便您选择最适合您的:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/Performance.html

【讨论】:

感谢您的回答:对我来说仍然不清楚您所说的非常快是什么意思,这是否意味着它与缓存或缓存一样快/或更快? 这意味着您可能不会感觉到差异。通过添加额外的层,您将增加开销。你可以测量性能,你会看到一些核心数据更快的用例,以及一些缓存更快的用例。问题是您需要了解什么对您的项目更好。一般来说,我更喜欢使用核心数据,原因在我之前的回答中解释过:没有重复,应用程序运行所需的数据的可靠持久性,易于使用且不需要额外的层。

以上是关于如果使用 CoreData,我需要缓存吗的主要内容,如果未能解决你的问题,请参考以下文章

如果您想通过 Core Data 使用多个实体,您需要为每个实体提供一个托管对象上下文吗?

Core Data 可以在 iOS 上延迟获取 BLOB 属性吗?

如何调整 Core Data 默认缓存的行为或大小?

如果我已经发布的 v1 没有版本化的 Core Data 模型,我可以使用“自动轻量级迁移”吗?

Core Data 在 Context 中删除 NSManagedObject 需要时间吗?

如果我使用 Core Data 手动迁移,我以后可以集成 iCloud 同步吗?