0

我第一次创建了一个核心数据应用程序。它运行良好。我使用 Web 服务(使用 AFNetworking)使用数据创建了所有对象。我的物件都建好了。所以,现在我想知道预加载数据的最佳方式是什么。(网络服务>核心数据>我的观点)暂时,它很简单,但绝对不是用户友好的,就是这样:

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

    return YES;
}

loadDataFromWebService 是一个调用两个连续函数的函数。(删除核心数据对象中的所有数据并重新创建运行良好的对象)所以,我想知道在哪里可以调用这 5 个函数?是否可以像许多 iOS 应用程序一样在启动画面中有加载程序?或者创建一个加载数据的中间视图。
非常感谢。

4

2 回答 2

0

可以在 AppDelegate 中触发同步(在 applicationDidBecomeActive: 方法中),因为它是执行代码的第一个位置。只要确保您在后台线程中进行所有同步即可。

这个话题很笼统,但是你可以在网上找到关于同步策略的很好的例子,例如How To Synchronize Core Data with a Web Service – Part 1

于 2013-10-02T12:04:44.017 回答
0

永远,永远,永远加载这样的数据didFinishLaunchingWithOptions:。这个方法应该做最少的必要,然后尽快返回。把慢的东西放在那里可能会导致糟糕的用户体验,如果你的应用程序没有足够快地退出该功能,iOS 可能会强制关闭你的应用程序。

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

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

于 2013-10-02T12:03:00.250 回答