Получение достижений игрового центра по идентификатору - PullRequest
5 голосов
/ 05 августа 2011

У меня вопрос, связанный с достижениями Игрового центра. Можно ли получить название / описание достижения по его идентификатору? Я пытаюсь избежать жесткого кодирования каждого идентификатора с соответствующим именем, так есть ли решение, которое может получить имя? Спасибо, Сами

1 Ответ

10 голосов
/ 05 августа 2011

Конечно, именно поэтому у вас есть поддержка локализации достижений (а также списков лидеров) в iTunes Connect.

Однако нет возможности спросить Game Center о локализованной информации только для одного достижения, основанного наэто ID.Вместо этого вы запрашиваете информацию обо всех достижениях, которая дает вам массив объектов GKAchievementDescription, которые лучше всего поместить в словарь, где ключи являются идентификаторами достижений, а затем вы выбираете правильный объект GKAchievementDescription из этого словаря.

NSMutableDictionary *achievementDescriptions = [[NSMutableDictionary alloc] init];
[GKAchievementDescription loadAchievementDescriptionsWithCompletionHandler:^(NSArray *descriptions, NSError *error) {
    if (error != nil) {
        NSLog(@"Error getting achievement descriptions: %@", error);
    }
    for (GKAchievementDescription *achievementDescription in descriptions) {
        [achievementDescriptions setObject:achievementDescription forKey:achievementDescription.identifier];
    }
}];

И затем, когда вы хотите отобразить информацию о каком-либо достижении:

GKAchievementDescription *achievementDescription = [achievementDescriptions objectForKey:currentAchievement.identifier];

Этот объект дает вам локализованный заголовок, описание того, когда он был достигнут и не достигнут, а также количество набранных им очков иизображение, указанное в iTunes Connect.

...