我的游戏实现了一个自定义用户界面,其中列出了本地玩家的朋友。
我还有一个游戏中心的主板。
当我的游戏列出玩家时,它还尝试使用以下代码从主板加载他们的分数:
GKLeaderboard *request = [[GKLeaderboard alloc] initWithPlayerIDs:myFriends];
request.timeScope = GKLeaderboardTimeScopeAllTime;
request.identifier = @"my_leaderboards";
if (request != nil) {
[request loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
if (error != nil) {
NSLog(@"Error: %@",error.localizedDescription);
}
if (scores != nil) {
NSLog(@"WORKED: %@",scores);
}
}];
}而且效果很好。
..。除非其中一个朋友没有得分(例如,他们一开始就没玩过这个游戏)。当myFriends中的某个球员在主板上没有得分条目时,完成处理程序永远不会被称为。没有错误,也没有记分报告,因为它从一开始就不会触发。
我在测试一个有两个朋友的帐户时就意识到了这一点。一位朋友玩过游戏(所以他们有分数),而另一位则没有。未调用完成处理程序。然后,我解除了那个没有分数的家伙,完成处理程序工作得很好,还给了那个有分数的朋友的分数。
我有点理解这种行为--毕竟,我要求它给我一个不存在的分数。但有解决办法吗?在没有分数的情况下,告诉它返回0?
iOS 7。
发布于 2014-04-19 23:40:30
这是无法帮助的,完成处理程序确实不会被调用,因为在领导板中没有分数条目。虽然我仍然不明白为什么它不只是返回一个错误,这样说。
因为自定义好友列表只显示统计信息,所以我只是为每个统计数据设置了一个加载图标。如果处理程序调用时间不超过10秒,则假设没有记分项,只显示0。
https://stackoverflow.com/questions/23128790
复制相似问题