2012-07-17 3 views
0

안녕하세요, 저는 NSMutableArray에서 정수 값을 얻으려고합니다. 나는 모든 숫자를 보유하고있는 programStack을 호출했습니다. 이 메소드는 실행 취소 메소드이므로 실행 취소를 누르면 스택의 마지막 항목이 지워지고 이전 옵션이 리턴됩니다. 숫자를 얻으려고 할 때 undoVariable 메서드는 반환 될 때 undoVariable에 올바른 값을 갖지만 표시 될 때 잘못된 값을 반환합니다. 예를 들어 배열에 2, 3이 있습니다. 3을 지우고 문자열을 UndoVariable에 2로 표시 한 다음 self.display.text를 사용하여 1.57539e-302를 표시합니다. 포인터 주소일까요? 여기에 코드가 있습니다.Objective-C : NSMutableArray에서 정수 값 검색

- (IBAction)undoPressed { 

NSString* string = self.display.text; 

if(userIsInTheMiddleOfEnteringANumber){ 
    if([self.display.text length]) 
     string = [string substringToIndex:([string length]-1)]; 

} else { 
    string = [NSString stringWithFormat:@"%g",[self.brain undoVariable]]; 
    NSLog(@"string is %@", string); 
} 

    self.display.text = string; 
} 

-(NSString*) undoVariable{ 

if(self.programStack) 
[self.programStack removeLastObject]; 
    if(self.programStack){ 
     NSString* string = @""; 
     string = [string stringByAppendingString: [self.programStack lastObject]]; 
     NSLog(@"string = %@", string); 
     NSLog(@"self.display.text = %@", [self.programStack lastObject]); 
     return string; 
} 

답변

0

귀하 %의 g 형식은 부동 소수점 숫자로 주어진 값을 치료하기 위해라고하지만 undoVariable 그것이있는 NSString을 반환했다. 포맷을 정말로 원한다면 % @이 필요합니다. 그러나 문자열을 다시 포맷하는 것보다는 문자열을 사용하는 것이 훨씬 쉽습니다 (예 : string = [self.brain undoVariable];).