检查intValue时,Text字段中的标点符号导致错误行为

时间:2013-06-19 19:32:34

标签: ios objective-c cocoa-touch

如果UIText字段中输入的值小于200,则会生成警报。

如果用户在字段中添加>以表示其大于200,则仍会触发警报。显然我不想这样,所以我需要某种方式忽略这个标点符号甚至更好的所有标点符号

默认为数值不是一个选项

if  ([_myTextBox.text intValue]< 200){

   //alert is fired
}

1 个答案:

答案 0 :(得分:1)

您的问题是,只要字符串不是从有效的十进制数字开始,intValue就会返回0.正确的方法是使用数字格式化程序:

NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *value = [formatter numberFromString:_myTextBox.text];
// if _myTextBox.text is not a valid number, value will be nil
if (number && ([number intValue] < 200) {
    // Place your code here
}