I use the [GKAchievement loadAchievementsWithCompletionHandler:] function to restore the player’s current achievements during initialization. But Harder’s completion was never called.
- (void) loadAchievements
{
[GKAchievement loadAchievementsWithCompletionHandler: ^ (NSArray * achievements, NSError * error)
{
if (error == nil) // !! - if a breakpoint is set here, it would never be reached
{
@synchronized (_achievementsDictionary)
{
for (GKAchievement * achievement in achievements)
[_achievementsDictionary setObject: achievement forKey: achievement.identifier];
NSLog (@ "achievements loaded");
}
}
else
{
NSLog (@ "Error in loading achievements:% @", error);
}
}];
}
However, a similar function [GKAchievementDescription loadAchievementDescriptionsWithCompletionHandler:] works well:
- (void) retrieveAchievmentMetadata
{
[GKAchievementDescription loadAchievementDescriptionsWithCompletionHandler:
^ (NSArray * descriptions, NSError * error) {
if (error! = nil)
{
NSLog (@ "Error in loading achievement descriptions:% @", error);
}
if (descriptions! = nil)
{
@synchronized (_achievementsMetaDataDictionary)
{
for (GKAchievementDescription * desc in descriptions)
{
_achievementsMetaDataDictionary [desc.identifier] = desc;
}
}
NSLog (@ "achievement descriptions loaded");
}
}];
}
What could be the problem?
source share