在应用程序购买本地货币符号中更正

时间:2014-04-12 16:45:53

标签: ios in-app-purchase currency nslocale

通过应用内购买,我希望本地货币符号显然适合用户本地货币。使用NSLocaleCurrencySymbol作为检测用户所在位置的主要来源是否安全。这是我的代码的一部分:

         NSLocale *theLocale = [NSLocale currentLocale];
     NSString *symbol = [theLocale objectForKey:NSLocaleCurrencySymbol];
     NSString *cost = [NSString stringWithFormat:@"%@",product.price];

默认情况下,当用户购买iOS设备时,在每台设备的国际设置中自动完成正确的区域格式?

4 个答案:

答案 0 :(得分:9)

您想使用NSNumberFormatter

<强>目标C

NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setLocale:product.priceLocale]; 
NSString *cost = [formatter stringFromNumber:product.price];

<强>夫特

let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.locale = product.priceLocale
let cost = formatter.stringFromNumber(product.price)

然后,这将使用正确的十进制,分隔符和货币符号格式化货币。

答案 1 :(得分:2)

您不需要这样做,SKProduct附带本地用户商店,您可以使用 -

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[numberFormatter setLocale:product.priceLocale];
NSString *formattedString = [numberFormatter stringFromNumber:product.price];

看这里 -

Apple Docs

答案 2 :(得分:2)

在swift中

var currency_format = NSNumberFormatter()
currency_format.numberStyle = NSNumberFormatterStyle.CurrencyStyle
currency_format.locale = validProduct.priceLocale
mylabel.text = currency_format.stringFromNumber(validProduct.price)

答案 3 :(得分:2)

已更新为Swift 3.0并作为SKProduct的扩展:

import StoreKit

extension SKProduct {
    func getLocalizedPrice()->String{
         let formatter = NumberFormatter()
         formatter.numberStyle = .currency
         formatter.locale = self.priceLocale
         return  formatter.string(from: self.price)
        }
}