2012-07-17 34 views
0

您好我想從一個NSMutableArray中獲取一個整數值,我稱爲programStack,它包含所有數字。這個方法是一種撤銷方法,所以當我點擊撤消時,它會擦除​​堆棧中的最後一個項目並返回前一個選項。當我嘗試獲取數字時,方法undoVariable在返回字符串時具有正確的值,但在顯示時出現錯誤值。一個例子是在陣列上有2,3。我在UndoVariable中擦除3和字符串顯示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];