2013-12-18 5 views
-2

두 장면 사이에 데이터 (점수)를 전달하려고합니다. 그러나 첫 번째 장면이 데이터를 전달하기 전에 두 번째 장면이 할당됩니다. 이유를 모르겠다. 내 코드 :들어오는 장면이 현재 장면이 데이터를 전달하기 전에 할당합니다.

MainScreen.m

-(void)gameOver 
{ 

    self.view.scene.userData = [[NSMutableDictionary alloc]init]; 
    [self.view.scene.userData setObject:self.score forKey:@"score"]; 

    SVGGameOverScreen *gameOverScreen = [[SVGGameOverScreen alloc]initWithSize:self.size]; 
    gameOverScreen.view.scene.userData = [[NSMutableDictionary alloc]init]; 
    [gameOverScreen.userData setObject:[self.view.scene.userData objectForKey:@"score"] forKey:@"score"]; 

    NSLog(@"Value of score (FIRST SCREEN): %d", self.score.intValue); 
    NSLog(@"Value of object for score key (FIRST SCREEN) %@", [self.userData objectForKey:@"score"]); 

    [self.backgroundMusicPlayer stop]; 

    //Transition to new view 
    SKTransition *transition = [SKTransition pushWithDirection:SKTransitionDirectionUp duration:1.0]; 
    transition.pausesOutgoingScene = YES; 
    [self.view presentScene:gameOverScreen transition:transition]; 
} 

GameOverScreen.m

in init method 
... 
self.score = [[NSNumber alloc]init]; 
     self.score = [self.userData objectForKey:@"score"]; 
     NSLog(@"Value of object for score key (SECOND SCREEN) %@", [self.userData objectForKey:@"score"]); 

gameOver를 호출 할 때 다음과 같이 출력은 : 당신이 호출 할 경우

2013-12-18 15:47:48.646 [] Value of object for score key (SECOND SCREEN) (null) 
2013-12-18 15:47:48.700 [] Value of score (FIRST SCREEN): 26 
2013-12-18 15:47:48.700 [] Value of object for score key (FIRST SCREEN) 26 

답변

1

[SVGGameOverScreen alloc]initWithSize:self.size]; 

그리고 userData를 내부에 설정하지 마십시오. 물론 메소드가 반환 될 때까지는 userData가 설정되지 않습니다. 어느 쪽이든 당신은 userData에 설정 한 후해야 할 어떤 논리를 재현하는 새로운 방법을 쓰기이

initWithSize: (CGSize) size userData: (NSMutableDictionary*) userData 

같은 새로운 방법으로 화면을 통해 게임에 전달할 내부를 설정하거나 (아마 더 나은)를 만들 속성에 대한 사용자 정의 setter 및 거기에 논리를 넣어.

덧붙여서, 점수가 userData의 "score"키와 동일하게 설정되도록 NSNumber를 작성하는 이유는 무엇입니까?

+0

NSNumber에 대한 우려로 무엇을 제안 하시겠습니까? – EvilAegis

+0

그 라인을 전부 제거하는 것. 새로운 NSNumber를 초기화하여 점수를 다음 줄의 다른 것과 동일하게 설정하는 것은 없습니다. –

관련 문제