gpt4 book ai didi

ios - 我在文本字段中做错了什么结束编辑??货币格式

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:06:07 25 4
gpt4 key购买 nike

所以部分代码看起来像

- (void)textFieldDidEndEditing:(UITextField *)textField
{
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber *currency = [NSNumber numberWithDouble:[self.SalesAmounttext.text doubleValue]];

self.SalesAmounttext.text = [formatter stringFromNumber:currency];

}

上面的代码意味着如果我在文本字段中输入 499,文本将被转换为 $499.00。如果我清除整个文本字段,并重新输入另一个数字,比如说 599,文本将转换为 $599.00。这些都是正确的和预期的行为。

但是,如果我碰巧将 $599.00 退格为 $ 或 $5,然后输入一个新数字(例如 509)并离开文本字段,我的文本字段输出将变为 $0.00。有人知道我做错了什么吗?

最佳答案

问题在于:

[self.SalesAmounttext.text doubleValue]

只有当文本没有格式、没有货币符号、没有分组字符和小数点分隔符时,这才会给出一个有效值。如果不是全部为真,则返回 0。

您需要通过使用货币格式化程序来解析文本,将现有文本转换为 double

- (void)textFieldDidEndEditing:(UITextField *)textField
{
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber *current = [formatter numberFromString:self.SalesAmounttext.text];
if (!current) {
NSNumberFormatter *formatter2 = [[NSNumberFormatter alloc] init];
current = [formatter2 numberFromString:self.SalesAmounttext.text];
}

self.SalesAmounttext.text = [formatter stringFromNumber:current];
}

您可能需要一些额外的检查来处理无效数字。

关于ios - 我在文本字段中做错了什么结束编辑??货币格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22339255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com