您好我正在尝试从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;
}
答案 0 :(得分:0)
您的%g格式表示将给定值视为浮点数,但undoVariable
表示它返回NSString。如果你真的想格式化它,你需要%@。但是,使用字符串而不是重新格式化它更简单,如:string = [self.brain undoVariable];
。