1

オブジェクトの価格を入力するユーザーを含むアプリで作成しており、アプリは税込みの価格を出力します。ただし、0を出力するたびに、変数myDoubleに関連する実行時エラーが発生します。テキストフィールドに入力された値を取得し、1.06を掛けて(設定された税率から始めます)、ラベルを新しい値に設定しようとしています。これが私のコードです:

-(IBAction)textFieldReturn:(id)sender
{
    [sender resignFirstResponder];
    NSString *myString = inputtext2.text;
    double myDouble = [myString doubleValue];
    myDouble = myDouble*1.06;
    NSLog(@"myDouble: %lf", myDouble);
    price.text = [NSString stringWithFormat:@"%g", myDouble];
}
4

2 に答える 2

1

ほとんどの場合、inputtext2変数はnilであるため、何も返しません。これがアウトレットの場合は、InterfaceBuilderで接続を確認してください。アウトレットが接続されていない場合、変数はになりnil、文字列値はになりnil、double値は0になります。

于 2012-08-01T15:21:31.180 に答える
0

NSNumberFormatterを使用して、有効なエントリを確認する必要があると思います。

擬似コード、コンパイルされていない:

-(IBAction)textFieldReturn:(id)sender
{
    [sender resignFirstResponder];
    NSString *myString = inputtext2.text;    
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setNumberStyle: NSNumberFormatterDecimalStyle];
    NSNumber *myNumber = [formatter numberFromString: myString];
    double myDouble = 0;
    if (myNumber != nil) {
      myDouble = [myNumber doubleValue];
    }

    NSString *outputString = [formatter stringFromNumber:myDouble];
    price.text = outputString;
}

入力されたテキストが0であるか、有効な番号でない場合、これによりデフォルトで番号が0になります。

于 2012-08-01T14:21:41.640 に答える