我使用下面的代码将输入的字符格式化为十进制样式,我在textFieldShouldEndEditing中使用以下代码:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
long long num = [[formatter numberFromString:textField.text] longLongValue];
NSString *formattedOutput = [formatter stringFromNumber:[NSNumber numberWithLongLong:num ]];
textField.text = formattedOutput;
[formatter release];
我在上面的代码中遇到的问题是,它第一次正常工作,但是当我们回到文本字段并进行编辑,然后从中出来时,则值变为0,
例如,我输入的初始值为123456789,并正确输出了123,456,789。如果我然后重新输入并编辑文本字段为123,456,78,则该字段将填充为0, 什么时候应该是12,345,678。
答案 0 :(得分:2)
NSNumberFormatter依赖于正确格式化的文本。
因此,当您删除数字中的最后一位数字时...也就是现在的数字:
123,456,78
现在数字格式不正确,NSNumberFormatter认为它不是有效数字并返回零。
如果您想从文本字段中获取万无一失的long long值,请在转换之前删除逗号(同时验证文本字段以确保其中仅有0-9
个数字)并且您应该很高兴。