Iphone 在应用程序启动时重新创建核心数据

Iphone 在应用程序启动时重新创建核心数据,iphone,core-data,Iphone,Core Data,我有一个连接到网站的应用程序。我将其数据存储为核心数据,然后使用核心数据加载TableView。我相信,每次启动应用程序时,我都想从网站上重新加载数据,因为如果用户进入网站,他们可以更改数据 最好的方法是什么?每次应用程序终止时,我是否应该删除核心数据?如果您想在内存中加载所有数据(并进行更新),那么您可以创建一个由NSAtomicStore持久存储子类支持的托管对象上下文。在NSAtomicStore子类中,您可以实现read:(load:方法)和CRUD操作(newReferenceObje

我有一个连接到网站的应用程序。我将其数据存储为核心数据,然后使用核心数据加载TableView。我相信,每次启动应用程序时,我都想从网站上重新加载数据,因为如果用户进入网站,他们可以更改数据


最好的方法是什么?每次应用程序终止时,我是否应该删除核心数据?

如果您想在内存中加载所有数据(并进行更新),那么您可以创建一个由
NSAtomicStore
持久存储子类支持的托管对象上下文。在NSAtomicStore子类中,您可以实现read:(
load:
方法)和CRUD操作(
newReferenceObjectForManagedObject:
save
:和
updateCacheNode:frommagedobject:
方法)

我不确定应用程序如何使用核心数据堆栈,但如果您不关心(或没有)在设备上进行本地更改,我想说从服务器刷新数据的最简单方法就是你所说的:清除存储文件,重新创建它,然后从服务器导入数据。但是,我不会在每次应用程序启动时系统地这样做。确保用户知道并考虑提供“刷新”按钮触发该过程。在清除本地存储之前,还要确保您可以从服务器下载新内容。

这取决于设备上的数据始终保持最新的重要性,取决于您期望用户在使用应用程序之前等待的时间,以及您希望在有人试图使用应用程序时发生什么e网络速度慢或不可用。如果删除商店,应用程序无法立即连接,则用户没有数据。即使网络状况良好,用户仍必须等待网络和服务器延迟才能开始使用应用程序。这可能是用户体验不佳

另一方面,如果在应用程序退出后允许数据持久化,则用户的数据可能不是最新的,至少一开始不是

如果您不希望数据在应用程序退出后保持不变,那么内存存储可能是最佳选择,因为它无论如何都不会保存到文件中


如果(a)在应用程序启动时短暂显示或(b)显示可能的旧数据是可以的当网络不可用时,更好的选择是保留数据存储,但进行新的网络调用以更新现有数据。您可以提供某种类型的UI来指示更新正在进行。您还可以在应用程序中指示应用程序上次与服务器同步的时间。

我在NSAtomicStore上读到一些内容,但我仍然不知道你为什么要使用它。没有一篇文章或苹果的文档真正清楚为什么。另外,仅仅想删除数据然后加载新数据似乎需要太多的开销。也许我只是对它的方式一无所知。NSAtomicStore用于创建自定义的持久存储格式。它让你超越苹果提供了xml、二进制、内存和sqlite存储。这对于这个问题来说太过分了。再想一想,我真的应该保留数据,但随后提供某种指示,表明数据可能不是最新的,上次更新的时间,或者更新正在进行,就像你建议的那样。我喜欢这个想法。