2012-07-17 41 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];