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