我使用NSNumberFormatter将用户输入转换为NSNumber(十进制数),我使用ARC。NSNumberFormatter在设备上返回nil,而不是在模拟器上
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
[f setMaximumFractionDigits:1];
_myNumber = [f numberFromString:myTextField.text];
有时,这会导致_myNumber
是nil
。即使我确信用户输入是正确的十进制数(我在调试期间检查过)。
为了完整性:_myNumber
是ViewController的综合属性。 这只发生在设备上运行应用程序时,而不是在模拟器中运行时发生。 正在使用的键盘是'Decimal Pad' 在不同的代码段中,在不同的ViewController中,代码确实有效。
我现在,我已经在上面的代码下面添加了一个解决办法:
if (!myNumber){
myNumber = [NSNumber numberWithFloat: myTextField.text.floatValue];
}
有谁知道为什么NSNumberFormatter可以回到零,调用[NSNumber numberWithFloat: myTextField.text.floatValue]
作品甚至当?
“myTextField.text.floatValue”在模拟器和设备中返回什么? –
它返回正确的十进制数(float),就像它已经被输入一样。 – Brabbeldas