我是第一次创建核心数据应用。它运行良好。我使用Web服务(使用AFNetworking)创建了包含数据的所有对象。我的物品都是建造的。 所以,现在我想知道预加载数据的最佳方法是什么。 (webservice>核心数据>我的观点) 目前,它很简单,但绝对没有用户友好,就是这样:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[ManagedMember loadDataFromWebService];
[ManagedLesson loadDataFromWebService];
[ManagedThematic loadDataFromWebService];
[ManagedNew loadDataFromWebService];
[ManagedProject loadDataFromWebService];
return YES;
}
loadDataFromWebService是一个调用两个连续函数的函数。 (删除Core数据对象中的所有数据并重新创建运行良好的对象) 所以,我想知道在哪里可以称之为5个功能?像许多iOS应用程序一样,是否可以在启动画面中安装加载程序?或者创建一个加载数据的中间视图 非常感谢。
答案 0 :(得分:0)
从不,永远不会在didFinishLaunchingWithOptions:
中加载这样的数据。此方法应尽可能少地执行,然后尽快返回。将缓慢的东西放在那里会导致糟糕的用户体验,如果iOS没有足够快地退出该功能,iOS可以强行关闭你的应用程序。
正如D-eptdeveloper建议的那样,viewDidLoad
是一个更好的触发加载代码的地方,但它仍然不是很好。理想情况下,您可以在应用程序的早期触发数据加载,并且各个视图控制器只需在必要时请求数据(理解数据可能尚未提供,因此可能必须显示某种进度指示器)。
在向用户显示初始UI之后,触发数据加载的合适位置/时间。这减少了潜在的问题,即在较早时间触发数据加载实际上减慢了UI的外观(不是良好的用户体验)。
答案 1 :(得分:0)
可以在AppDelegate中触发同步(在applicationDidBecomeActive:方法中),因为它是代码执行的第一个位置。只需确保在后台线程中执行所有同步。
此主题非常通用,但您可以找到有关在线同步策略的良好示例,例如: How To Synchronize Core Data with a Web Service – Part 1