2017-08-07 114 views
1

如果貨幣值等於GBP,貨幣標籤用於顯示「£」,如果不是,則顯示「€」標誌。但是,無論貨幣是英鎊還是歐元,它都會返回「$」符號。爲什麼?使用Objective-C顯示錯誤值的貨幣標記標籤

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]; 
+0

什麼是您的overviewModel.currency返回? –

+0

@ParasGorasiya默認情況下它會返回「GBP」 –

+0

將其分配給currencySign之前打印overviewModel.currency。 –

回答

2

而不是手動執行此操作,爲什麼不使用NSNumberFormatter呢?

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

或者斯威夫特

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

使用NSNumberFormatter,你將能夠支持任何貨幣,並簡化代碼。

+0

我想使用NSNumberFormatter但價格的JSON值是一個字符串.. –

+0

從字符串中創建一個NSDecimalNumber並使用它。 NSDecimalNumber是專門用於處理值不能精確的值的類型,因此非常適合貨幣值。 '''NSDecimalNumber * number = [[NSDecimalNumber alloc] initWithString:@「23.50」];''' – dlbuckley

+0

2017-08-07 10:48:37.043673 + 0100 CVP.com [8782:3476122] jello£290.83 這就是它被打印,但磅標誌不顯示在標籤,我不知道爲什麼它這樣做 –