Iphone 如何使用核心数据预加载数据

Iphone 如何使用核心数据预加载数据,iphone,ios,core-data,view,load,Iphone,Ios,Core Data,View,Load,我第一次创建了一个核心数据应用程序。它运行良好。我使用web服务(使用AFNetworking)创建了所有包含数据的对象。我的东西都是造出来的。 所以,现在我想知道预加载数据的最佳方法是什么。(Web服务>核心数据>我的视图) 目前,它很简单,但绝对没有用户友好性,这就是: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

我第一次创建了一个核心数据应用程序。它运行良好。我使用web服务(使用AFNetworking)创建了所有包含数据的对象。我的东西都是造出来的。 所以,现在我想知道预加载数据的最佳方法是什么。(Web服务>核心数据>我的视图) 目前,它很简单,但绝对没有用户友好性,这就是:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [ManagedMember loadDataFromWebService];
    [ManagedLesson loadDataFromWebService];
    [ManagedThematic loadDataFromWebService];
    [ManagedNew loadDataFromWebService];
    [ManagedProject loadDataFromWebService];

    return YES;
}
loadDataFromWebService是一个调用两个连续函数的函数。(删除核心数据对象中的所有数据,并重新创建运行良好的对象) 我想知道在哪里可以调用这5个函数?有没有可能像许多iOS应用程序一样在启动屏幕上有一个加载器?或创建一个加载数据的中间视图。

非常感谢

didfishlaunchingwithoptions:
中从未、从未、从未加载这样的数据。此方法应尽可能少地执行必要的操作,然后尽快返回。把慢的东西放在那里可能会导致糟糕的用户体验,如果你的应用程序没有足够快地退出该功能,iOS可能会强制关闭你的应用程序

正如D-EPTDevelover所建议的那样,
viewDidLoad
是触发加载代码的更好地方,但它仍然不太好。理想情况下,您可以在应用程序的早期某个位置触发数据加载,而各个视图控制器只需在必要时请求数据(理解数据可能还不可用,因此可能需要显示某种进度指示器)


触发数据加载的合适位置/时间是在向用户显示初始UI之后。这减少了一个潜在的问题,即在更早的时间触发数据加载实际上会减慢UI的外观(不是一个好的用户体验)

在AppDelegate中触发同步(在applicationIDbecomeactive:method中)是可以的,因为它是执行代码的第一个位置。只需确保在后台线程中执行所有同步


这个主题非常笼统,但是你可以在网上找到关于同步策略的好例子,例如:

你不能在“didFinishLaunchingWithOptions”方法中预加载数据。我认为你应该将该代码放在你的rootviewcontroller的“viewDidLoad”方法中。是的,我尝试过,但每次进入视图时都会重新加载数据。你可以在viewDidLoad中进行预加载(或其他方法),但您需要设置一个标志,以便它不会再次尝试加载数据。如果此数据在第一次加载期间仅加载一次,请在NSUserDefaults中设置一个标志。否则,如果每次打开应用时调用一次,则只需设置一个BOOL并检查它以确保不会再次调用。此外,启动时间过长可能会导致应用重新启动ted在上传过程中从Xcode内部发送一条类似于“你的应用程序启动时间过长”的消息。这是作为整个审查过程的第一部分进行的第一次检查。那么我如何在应用程序的早期某处开始数据加载?这是我的问题。但是,是的,在
viewDidLoad
中是一个解决方案@occulus@Benjamin在我的回答中添加了一条评论。