我正在使用Objective-C创建一个新的iOS应用程序。我的应用程序使用提供JSON数据的API。问题是列表中有数百个JSON对象,无法使用API缩小搜索范围。我只想要前十,但是当我扫描它们所有时,它需要永远。
有没有办法只扫描前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 :(得分:0)
NSInteger findedPhase = 0;
for (NSDictionary *d in _f1) {
if ([d[@"phase"] isEqualToString:@"BEFORE"] && findedPhase < 10)
{
[_fetched addObject:d];
findedPhase += 1;
}else {
break;
}
}
这仅为10个“之前”阶段(或更少)添加到_fetched数组。这是你想要的吗?