Parse.com应用程序在我获得我想要的值(异步)iOS之前前进

Parse.com应用程序在我获得我想要的值(异步)iOS之前前进,ios,asynchronous,parse-platform,Ios,Asynchronous,Parse Platform,我使用查询FindObjectsInBackgroundithBlock(assync)从webservice获取一个值。。。我希望在加载应用程序之前在appdelegate上显示该值。我试着这么做,但他还是先加载应用程序,然后再检查Web服务以获取值。我怎么办?我已经试过使用NSTimer 我在-(BOOL)application:(UIApplication*)应用程序中调用了此方法,并使用选项完成了启动:(NSDictionary*)启动选项: -(void)checkUserVersio

我使用查询FindObjectsInBackgroundithBlock(assync)从webservice获取一个值。。。我希望在加载应用程序之前在appdelegate上显示该值。我试着这么做,但他还是先加载应用程序,然后再检查Web服务以获取值。我怎么办?我已经试过使用NSTimer

我在
-(BOOL)application:(UIApplication*)应用程序中调用了此方法,并使用选项完成了启动:(NSDictionary*)启动选项

-(void)checkUserVersion{
    PFQuery *query = [PFQuery queryWithClassName:@"sqliteversion"]; //1
    // NSNumber *n=databaseVersion;
    [query whereKey:@"user_version" equalTo:[NSNumber numberWithInt:[databaseVersion integerValue]]];//2
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {//4
        if (!error && [objects count]>0) {

            for (PFObject *object in objects) {
                valor1=[[object objectForKey:@"Value"]intValue];
                user_version=[NSNumber numberWithInt:valor1];


            }

        }
    }];
}

在应用程序完成启动之前,您不能在应用程序中运行任何代码。如果该值对应用程序开始工作至关重要,则必须显示“等待数据”消息。

您可能需要评估为什么在启动前需要从Parse.com获取此信息。此外,在“发布前”可以说很多事情,还有许多解决方案不涉及在第一个视图连接到窗口并显示之前“做所有事情”


也就是说…在前台运行PFQuery获取。不过,这样做会阻止其余代码的执行。只需使用PFQuery的
findObjects
方法,而不是
findObjectsInBackground
。不过我建议不要这样做,而是尝试找到一种方法,在应用程序已经加载时等待查询返回。也许您可以暂停用户交互,但显示加载指示器或其他什么?

我没有解释清楚,我想在:
-(BOOL)应用程序上调用该方法:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项{
jsd的答案仍然有效。你不应该在启动过程中为此目的阻止应用程序。你到底想做什么?检查sqlite用户_版本以了解用户是否需要下载数据库的新版本。如果我在启动过程中不这样做,我会在什么时候这样做?你可以在应用程序启动后进行,如果必要的话下载新数据库,通知用户数据库需要迁移,然后进行迁移。或者询问客户是否愿意迁移,因为检测到新版本。@Fabio CardosoI会在应用程序中构建一个默认数据库,这样他们就可以在不等待的情况下做一些事情。5MB实际上并没有那么大。但是,这取决于你。如果你想将其空的和空的发送出去等待它在第一次运行时填充,继续,但要实现某种加载屏幕,以便用户知道他们什么也做不了。可能会显示一些图像,显示数据存在后如何使用应用程序。不要对后台发出PFQuery,而不是
findObjectsInBackground
,使用
findObjects
,它将阻塞k执行其余代码,直到提取完成。但是:这会延迟应用程序的启动,并且会让用户感到沮丧。我还相信,如果应用程序加载时间过长,操作系统可能会终止应用程序加载。我见过因启动失败而导致的崩溃。你已经被警告过,如果下载应用程序的人请解释问题的原因和问题所在。否决票很容易…但解释起来很难。我同意,伙计。进行表决。我只需要2秒钟来检查值并进行比较,我会尝试,谢谢。也许下周二parse的反应很慢,这会让很多人生气:-)只是说,2秒钟是一个猜测,也是一个bes如果它成功了,这不是最好的选择,可能是因为它会冻结2或3秒,但它解决了主要问题,我接受答案。