等待在app启动时加载数据

Jac*_*ień 2 ios

我对iOS开发很陌生,并且已经在一段时间内完成了任务.决定最终寻求帮助.

在我让应用程序启动之前,我有一些数据要从互联网上加载.我已经决定利用didFinishLaunchingWithOptionsAppDelegate

它是:

- (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;
}
Run Code Online (Sandbox Code Playgroud)

很明显,在加载数据之前,该方法将返回YES,因为它不会等待加载数据.我的问题是如何让这个方法在我返回YES之前等待这个块完成(如果配置没有正确加载,则为NO)?

Eim*_*tas 5

在返回之前不要等待数据下载YES.如果应用程序尚未在30秒内启动,则iOS具有杀死应用程序的监视程序守护程序.因此,如果您的用户网络连接非常糟糕导致下载超过30秒 - 您的应用程序将在开始之前被杀死.

我的建议是使用通知来通知所需方的配置下载.安装程序需要根视图控制器列出,例如MYApplicationDidDownloadConfigurationNotification,一旦收到通知,它就会重新加载UI或推送一些依赖于相关配置的其他视图控制器.

如果下载失败 - 更新UI而不是NO从委托方法返回.在您的所有应用程序启动后,只是没有运气下载配置.