使用 Objective-C 显示错误值的货币符号标签

Currency sign label showing the wrong value using Objective-C

如果货币价值等于 GBP,货币标签将显示“£”,否则无论货币是 GBP 还是 EURO,都显示“€"sign. However, it's returning the "$”符号。为什么?

NSString *currencySign = [overviewModel.currency isEqualToString:@"GBP"] ? @"£" : @"€";
self.productCoreDetailView.priceLabel.text = [NSString stringWithFormat:@"%@%@", currencySign, overviewModel.price];
self.productCoreDetailView.priceVATLabel.text = [NSString stringWithFormat:@"%@%@", currencySign, overviewModel.price_vat];

为什么不使用 NSNumberFormatter 而不是手动执行此操作?

NSNumberFormatter *formatter = [NSNumberFormatter new];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
formatter.currencyCode = @"GBP";
NSString *formattedNumber = [formatter stringFromNumber:@23.50];
// formattedNumber = £23.50

或Swift

let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencyCode = "EUR"
let formattedNumber = formatter.string(from: 23.50)
// formattedNumber = €23.50

通过使用 NSNumberFormatter,您将能够支持任何货币并简化您的代码。