0

服务器上有一个 JSON 文件,其中包含四个关于应用程序中数据版本的“键/值”对(它是一本食谱,所以版本是食谱的版本) 当应用程序启动时,它会下载 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;
   }
}

有人可以给我建议(或可能是例子)如何做到这一点?

4

1 回答 1

0

它很“慢”,因为它执行同步 URL 请求。如果它明显很慢,它可能只是在等待网络传输完成的大部分时间。

除了缓存数据或减小数据大小之外,您无法做太多事情来使其更快。

无论如何,您应该只执行一个异步请求,然后在完成后进行您的工作/更新。

于 2013-07-17T06:16:38.863 回答