服务器上有一个JSON文件,其中包含四个关于app中数据版本的“键/值”对(它是一本烹饪书,所以版本是食谱版本) 应用程序启动时,它会下载JSON并检查版本。
这是我的方法,但我觉得它很慢。
- (void)isUpdatesAvail
{
updatesAvail = NO;
NSInteger iVer = [[NSUserDefaults standardUserDefaults] integerForKey:@"ingredientsVer"];
NSInteger rVer = [[NSUserDefaults standardUserDefaults] integerForKey:@"recipesVer"];
NSInteger iCnt = [[NSUserDefaults standardUserDefaults] integerForKey:@"ingredientsCount"];
NSInteger rCnt = [[NSUserDefaults standardUserDefaults] integerForKey:@"recipesCount"];
NSString *countPath = [downloadPath stringByAppendingString:@"/versioninfo"];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:countPath]];
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSError *error = nil;
if (!responseData) {
return;
}
NSDictionary *recipesCount = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
if (!recipesCount) {
return;
}
rCount = [recipesCount objectForKey:@"recipeCount"];
iCount = [recipesCount objectForKey:@"ingredientCount"];
rVersion = [recipesCount objectForKey:@"recipeVersion"];
iVersion = [recipesCount objectForKey:@"ingredientVersion"];
if ([iVersion integerValue] > iVer || [rVersion integerValue] > rVer || [iCount integerValue] > iCnt || [rCount integerValue] > rCnt) {
updatesAvail = YES;
}
}
有人可以给我建议(或可能是例子)如何做到这一点?
答案 0 :(得分:0)
它'缓慢',因为它执行同步URL请求。它可能只是等待网络传输在大部分时间内完成,如果它显然很慢。
除了缓存数据或减少数据大小之外,没有太多办法可以让它更快。
无论如何,您应该只执行异步请求,然后在完成后进行工作/更新。