我使用NSNumberFormatter将用户输入转换为NSNumber(十进制数字),我使用ARC。
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
[f setMaximumFractionDigits:1];
_myNumber = [f numberFromString:myTextField.text];
有时这会导致
_myNumber
的值为nil
,即使我在调试期间确定用户输入的是正确的十进制数。为了完整起见:
_myNumber
是ViewController的一个自动生成属性。只有在设备上运行应用程序时才会出现这种情况,在模拟器中运行时不会出现。键盘使用的是“十进制键盘”。在另一个视图控制器的不同代码部分,该代码可以正常工作。现在我有一个解决方法,我已经将其添加在上述代码下面:
if (!myNumber){
myNumber = [NSNumber numberWithFloat: myTextField.text.floatValue];
}
有人知道为什么NSNumberFormatter可能返回nil吗?即使调用[NSNumber numberWithFloat: myTextField.text.floatValue]
也能正常工作。
myTextField.text.floatValue
返回什么? - John Sauer