Ios 等待在应用程序启动时加载数据
我对iOS开发还很陌生,并且已经努力完成了一段时间的任务。最终决定寻求帮助 在我让应用程序启动之前,我有一些数据要从互联网上加载。我决定在Ios 等待在应用程序启动时加载数据,ios,Ios,我对iOS开发还很陌生,并且已经努力完成了一段时间的任务。最终决定寻求帮助 在我让应用程序启动之前,我有一些数据要从互联网上加载。我决定在AppDelegate 这是: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after appl
AppDelegate
这是:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
//loading configuration
[Configuration downloadConfiguration:^(NSMutableArray *currencies, double refreshIntervalInMilis, double timeDifferenceInMilis, NSError *error) {
if (error) {
//displaying error dialog
} else {
//doing some stuff with data loaded
}
}];
return YES;
}
很明显,在加载数据之前,该方法将返回YES,因为它不会等待加载数据。我的问题是如何使此方法等待此块完成,然后返回YES(如果配置未正确加载,则返回NO)?在返回
YES
之前,不要等待数据下载。iOS有一个看门狗守护进程,如果应用程序在30秒内没有启动,它将终止应用程序。因此,如果您的用户的互联网连接非常糟糕,导致下载时间超过30秒,那么您的应用程序将在启动前被杀死
我的建议是使用通知通知所需各方配置的下载。安装程序需要列出的根视图控制器,例如myapplicationiddownloadconfigurationnotification
,一旦收到该通知,它将重新加载UI或推送依赖于相关配置的其他视图控制器
如果下载失败-更新UI,而不是从委托方法返回
NO
。在所有应用程序启动之后,只是没有幸下载配置。永远不要等待主线程上的网络访问。只需将代码添加到downloadConfiguration:
的callback块中,以初始化应用程序其余部分返回的数据。我的建议是添加一个启动屏幕,其中显示正在加载进度条。进度条表示您正在等待下载数据,完成后,您可以显示下一个屏幕。所以在appdelegate.h中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.splashviewController = [[SplashViewController alloc] init];
navigationController = [[NavigationController alloc] initWithRootViewController:self.splashviewController];
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
return YES;
}
在splashview控制器中,包含代码:
[Configuration downloadConfiguration:^(NSMutableArray *currencies, double refreshIntervalInMilis, double timeDifferenceInMilis, NSError *error) {
if (error) {
//displaying error dialog
} else {
//doing some stuff with data loaded
}
}];
您是从RESTAPI下载的吗 如果是,请使用此轻型库: 它将在后台进行加载