Objective-C:从NSMutableArray中检索整数值

时间:2012-07-17 23:26:12

标签: objective-c xcode methods nsmutablearray integer

您好我正在尝试从NSMutableArray获取一个整数值,我称之为programStack,它包含所有数字。这个方法是一个undo方法,所以当我点击undo时它会删除堆栈中的最后一项并返回上一个选项。当我尝试获取数字时,方法undoVariable在返回时具有正确的字符串值,但是当它显示后,我得到了错误的值。一个例子是在阵列上有2,3。我在UndoVariable中删除3和字符串显示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;
}

1 个答案:

答案 0 :(得分:0)

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