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"];