iOS: Best Way to do This w/o Calling Method 32 Times?

Posted by user1886754 on Stack Overflow See other posts from Stack Overflow or by user1886754
Published on 2014-06-11T03:22:59Z Indexed on 2014/06/11 3:24 UTC
Read the original article Hit count: 157

I'm currently retrieving the Top 100 Scores for one of my leaderboards the following way:

- (void) retrieveTop100Scores {

__block int totalScore = 0;

GKLeaderboard *myLB = [[GKLeaderboard alloc] init];
myLB.identifier = [Team currentTeam];
myLB.timeScope = GKLeaderboardTimeScopeAllTime;
myLB.playerScope = GKLeaderboardPlayerScopeGlobal;
myLB.range = NSMakeRange(1, 100);

[myLB loadScoresWithCompletionHandler:^(NSArray *scores, NSError *error) {
    if (error != nil) {

        NSLog(@"%@", [error localizedDescription]);
    }

    if (scores != nil) {

        for (GKScore *score in scores) {

            NSLog(@"%lld", score.value);

            totalScore += score.value;

        }

        NSLog(@"Total Score: %d", totalScore);
        [self loadingDidEnd];
    }
}];

}

The problem is I want to do this for 32 leaderboards. What's the best way of achieving this? Using a third party tool (Game Center Manager), I can get the following line to return a dictionary with leaderboard ID's as keys and the Top 1 highest score as values

NSDictionary *highScores = [[GameCenterManager sharedManager] highScoreForLeaderboards:leaderboardIDs];

So my question is, how can I combine those 2 segments of code to pull in the 100 values for each leaderboard, resulting in a dictionary with all of the leaderboard names as keys, and the Total (of each 100 scores) of the leaderboards for values.

© Stack Overflow or respective owner

Related posts about objective-c

Related posts about nsarray