2016-05-30 8 views
0

Objective-Cで新しいiOSアプリケーションを作成しています。私のアプリケーションはJSONデータを提供するAPIを利用しています。問題は、数百のJSONオブジェクトがリストにあり、APIを使用して検索を絞り込む方法がないことです。私は最初の10だけが欲しいですが、私はそれらをスキャンするときすべてはそれに永遠にかかる。Objective-CでX行をスキャンした後にJSONを取得しないようにします

最初の10個のJSONオブジェクトをスキャンして停止する方法はありますか?

ここに、すべてのデータを取得するコードを示します。

- (void)fetchCodeForces { 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    NSString *requestString = @"https://codeforces.com/api/contest.list?gym=false"; 
    NSURL *url = [NSURL URLWithString:requestString]; 

    NSURLRequest *req = [NSURLRequest requestWithURL:url]; 

    NSURLSessionDataTask *datatask = [self.session dataTaskWithRequest:req completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { 
     NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 

     _f1 = json[@"result"]; 

     for (NSDictionary *d in _f1) { 
      if ([d[@"phase"] isEqualToString:@"BEFORE"]) 
      { 
       [_fetched addObject:d]; 
      }else { 
       break; 
      } 
     } 

     dispatch_async(dispatch_get_main_queue(),^{ 

      [self.tableView reloadData]; 
     }); 



    }]; 
    [datatask resume]; 
}); 
} 

答えて

0
NSInteger findedPhase = 0; 
for (NSDictionary *d in _f1) { 
      if ([d[@"phase"] isEqualToString:@"BEFORE"] && findedPhase < 10) 
      { 
       [_fetched addObject:d]; 
       findedPhase += 1; 
      }else { 
       break; 
      } 
     } 

これはあなたの_fetched配列相(以下) "の前に" 最初のみ10に追加します。これはあなたが望んだものですか?

+0

forループはゆっくりと進んでいるわけではありません。理由は、すべてのデータをフェッチすることです。私が探しているのは、その一部のデータすべてをフェッチしない方法です。 – brettf

関連する問題