我正在使用Instagram API并希望显示一个屏幕,其中包含按照喜欢的数量排序的用户照片。 所以,我需要一个包含所有照片的数组。
我是这样做的:
- (void)fetchAllPostsFromURL:(NSURL *)url success:(void(^)(NSArray *posts))success {
__block NSArray *allPosts = [NSMutableArray array];
NSURLSessionDataTask *dataTask = [self.session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error){
if (!error) {
NSError *jsonError = nil;
id result = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
if ([result isKindOfClass:[NSDictionary class]] && !jsonError) {
NSMutableArray *tempArray = [NSMutableArray array];
for (NSDictionary *jsonPost in [result objectForKey:@"data"]) {
DVVPost *post = [[DVVPost alloc] initWithJSONData:jsonPost];
[tempArray addObject:post];
}
allPosts = [NSArray arrayWithArray:tempArray];
}
NSURL *paginationURL = [self getPaginationURLFromResult:result];
if (paginationURL) {
[self fetchAllPostsFromURL:paginationURL success:^(NSArray *posts) {
allPosts = [allPosts arrayByAddingObjectsFromArray:posts];
success(allPosts);
}];
} else {
success(allPosts);
}
} else {
NSLog(@"error: %@", [error localizedDescription]);
}
}];
[dataTask resume];
}
它有效,但需要花费大量时间。正如我所见,每秒有2-3个请求,每个请求给我20张照片。
我怎样才能加快速度?