0

こんにちは、すべての数値を保持する programStack と呼ばれる NSMutableArray から整数値を取得しようとしています。このメソッドは元に戻すメソッドなので、元に戻すを押すと、スタックの最後のアイテムが消去され、前のオプションが返されます。数値を取得しようとすると、メソッド 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;
}
4

1 に答える 1

0

あなたの %g 形式は、指定された値を浮動小数点数として扱うようにundoVariable言っていますが、NSString を返すと言っています。本当にフォーマットしたい場合は、%@ が必要です。ただし、次のように文字列を再フォーマットするよりも、文字列をそのまま使用する方がはるかに簡単ですstring = [self.brain undoVariable];

于 2012-07-18T00:42:53.420 に答える