NSNumberFormatter を使用して、ユーザー入力を NSNumber (10 進数) に変換します。ARC を使用します。
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
[f setMaximumFractionDigits:1];
_myNumber = [f numberFromString:myTextField.text];
場合によっては、_myNumber
になることがありますnil
。ユーザー入力が正しい10進数であると確信している場合でも(デバッグ中に確認しました)。
完全を期すために: _myNumber
ViewController の合成プロパティです。これは、シミュレーターでアプリを実行したときではなく、デバイスでアプリを実行したときにのみ発生します。使用されているキーボードは「Decimal Pad」です。コードの別のセクションでは、別の ViewController でコードが機能します。
上記のコードの下に追加した回避策があります。
if (!myNumber){
myNumber = [NSNumber numberWithFloat: myTextField.text.floatValue];
}
呼び出しが機能している場合でも、NSNumberFormatter が nil を返す理由を知っている人はいます[NSNumber numberWithFloat: myTextField.text.floatValue]
か?