문제

-(void) match:(GKMatch *)match didReceiveData:(NSData *)data fromPlayer:(NSString *)playerID {
NSMutableArray* grid = (NSMutableArray*)[NSKeyedUnarchiver unarchiveObjectWithData:[data bytes]];

    _game.gameMap.grid = grid;
    [_game updateMap:_game.localPlayer.playerFleet];
    _mainGameController = [[MainGameController alloc] initMainGameControllerWithGame:_game andFrame:self.frame.size];
    [self addChild:_mainGameController.containers.overallNode];

}

-(BOOL)sendMap {
NSError* error;

NSData* packet = [NSKeyedArchiver archivedDataWithRootObject:_game.gameMap.grid];
[_game.gameCenter.match sendDataToAllPlayers: packet withDataMode:GKMatchSendDataUnreliable error:&error];
if (error != nil) {
    NSLog(@"error");
}
return false;

}

This code returns a bad access error on the following line:

NSMutableArray* grid = (NSMutableArray*)[NSKeyedUnarchiver unarchiveObjectWithData:[data bytes]];
도움이 되었습니까?

해결책

unarchiveObjectWithData: expects its argument to be an instance of NSData. That is not what [data bytes] returns. You probably just want data.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top