Instagram Feed的递归分页。我怎样才能更快地完成这项工作?

时间:2015-07-01 14:34:27

标签: objective-c pagination instagram nsurlsession instagram-api

我正在使用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张照片。

我怎样才能加快速度?

API:https://instagram.com/developer/endpoints/users/

0 个答案:

没有答案