0

嗨,我正在尝试从一个名为 programStack 的 NSMutableArray 中获取一个整数值,该数组包含所有数字。此方法是一种撤消方法,因此当我点击撤消时,它会擦除​​堆栈上的最后一项并返回上一个选项。当我尝试获取数字时,方法 undoVariable 在返回时具有正确的字符串值,但是在显示之后我得到错误的值。一个例子是在数组上有 2, 3。我擦除 3 并且字符串在 UndoVariable 中显示 2,然后当我使用 self.display.text 显示它时显示 1.57539e-302。这可能是指针地址吗?这是代码。

- (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;
}
4

1 回答 1

0

您的 %g 格式表示将给定值视为浮点数,但undoVariable表示它返回一个 NSString。如果你真的想格式化它,你需要 %@。但是,只使用字符串而不是重新格式化它要简单得多,例如:string = [self.brain undoVariable];.

于 2012-07-18T00:42:53.420 回答