- (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];
}
}];
1
A
Antwort
1
Lesen Sie die Dokumentation für GKPlayer loadPlayersForIdentifiers:withCompletionHandler:
sendet. Das Array von Bezeichnern muss ein Array von NSString
sein, aber Sie übergeben ein Array von GKPlayer
.
Sie können dies tun, eine Reihe von Spieler-IDs aus dem Array von Spielern zu bekommen:
NSArray *playerIds = [match.players valueForKey:@"playerID"];
Dann playerIds
passieren statt match.players
zu loadPlayersForIdentifiers:withCompletionHandler:
.
In welcher Zeile tritt die Fehlermeldung auf? Während der Fehler nicht genau Englisch ist, ist es ziemlich klar; Sie senden ein Array von 'GKPlayer'-Objekten an eine Methode, die ein Array von' NSString'-Objekten erwartet – Paulw11
@ Paulw11 Der Fehler ist im Code kommentiert. – rmaddy
Oh richtig. Ich hasse es, wenn Leute das tun. Ich habe den grauen Text nie bemerkt. – Paulw11