我有一个连接到网站的应用。我将其数据存储为核心数据,然后使用核心数据加载我的tableviews。我相信,我希望每次启动应用程序时都会从网站重新加载数据,因为用户可以在进入网站时更改数据。
最好的方法是什么?我应该在每次应用程序终止时删除核心数据吗?
答案 0 :(得分:1)
如果要加载内存中的所有数据(并且还想进行更新),则可以创建由NSAtomicStore
持久性存储子类支持的托管对象上下文。在NSAtomicStore子类中,您可以实现read:(load:
方法)和CRUD操作(newReferenceObjectForManagedObject:
,save
:和updateCacheNode:fromManagedObject:
方法)
答案 1 :(得分:1)
我不确定您的应用程序如何使用Core Data堆栈,但如果您不关心(或没有)在设备上本地进行的更改,我会说最简单的方法从服务器刷新数据正是您所说的:清除存储文件,重新创建它并从服务器导入数据。但是,我不会在每次应用程序启动时系统地执行此操作。确保用户知道它并考虑提供“刷新”按钮来触发该过程。另外,在擦除本地商店之前,请确保可以从服务器下载新内容。
答案 2 :(得分:1)
这取决于设备上的数据总是最新的关键程度,您希望用户在使用应用程序之前等待多长时间,以及如果有人在网络上尝试使用应用程序时您希望发生什么很慢或不可用。如果删除商店,并且应用无法立即连接,则用户没有数据。即使网络很好,用户仍然必须等待网络和服务器延迟才能开始使用该应用程序。这可能是一个糟糕的用户体验。
另一方面,如果您在应用退出后允许数据保持不变,则用户的数据可能不是最新的,至少在开始时不是。
如果您不希望数据在应用程序退出后仍然存在,则内存存储可能是最佳选择,因为它永远不会保存到文件中。
如果可能(a)在应用程序启动时或(b)网络不可用时提供可能的旧数据,则更好的选择是保留数据存储但是进行新的网络调用以更新现有数据。您可以提供某种UI来指示更新正在进行中。您可能还有应用程序指示您的应用上次与服务器同步的时间。