Ios 不兼容的指针类型发送';NSArray<;GKPlayer*>*';至类型为'的参数;NSArray<;NSString*>;*_非空';
阅读Ios 不兼容的指针类型发送';NSArray<;GKPlayer*>*';至类型为'的参数;NSArray<;NSString*>;*_非空';,ios,objective-c,gamekit,Ios,Objective C,Gamekit,阅读GKPlayer LoadPlayers for Identifiers:withCompletionHandler:的文档。标识符数组需要是一个NSString数组,但您正在传入一个GKPlayer数组 您可以这样做,从玩家数组中获取玩家ID数组: - (void)lookupPlayers { NSLog(@"Looking up %lu players...", (unsigned long)match.players.count); // Error on the
GKPlayer LoadPlayers for Identifiers:withCompletionHandler:
的文档。标识符数组需要是一个NSString
数组,但您正在传入一个GKPlayer
数组
您可以这样做,从玩家数组中获取玩家ID数组:
- (void)lookupPlayers {
NSLog(@"Looking up %lu players...", (unsigned long)match.players.count);
// Error on the below line
[GKPlayer loadPlayersForIdentifiers:match.players withCompletionHandler:^(NSArray *players, NSError *error) { {
if (error != nil) {
NSLog(@"Error retrieving player info: %@", error.localizedDescription);
matchStarted = NO;
[delegate matchEnded];
} else {
// Populate players dict
self.playersDict = [NSMutableDictionary dictionaryWithCapacity:players.count];
for (GKPlayer *player in players) {
NSLog(@"Found player: %@", player.alias);
[playersDict setObject:player forKey:player.playerID];
}
// Notify delegate match can begin
matchStarted = YES;
[delegate matchStarted];
}
}];
然后将
playerIds
而不是match.players
传递给loadPlayersForIdentifiers:withCompletionHandler:
错误消息出现在哪一行?虽然错误并不完全是简单的英语,但它相当清楚;您正在将一个GKPlayer
对象数组发送到一个方法,该方法需要一个NSString
objects@Paulw11代码中对错误进行了注释。哦,对了。我讨厌人们那样做。我从来没有注意到灰色文本。很高兴我能帮上忙。别忘了接受有用的答案,表明你的问题已经解决了。
NSArray *playerIds = [match.players valueForKey:@"playerID"];