我需要一种将价格从NSNumber格式化为这样的字符串的方法:
“0.99美元”,而不是“0.99美元”。
我的游戏使用自定义字体,并且它们没有所有可用的App Store货币(例如GBP)的符号。因此,我认为最好回滚到货币的字符串表示形式。
对于App Store支持的任何货币,使用的方法都绝对可以。
最佳答案
如果您希望将其本地化(即,货币位于价格的正确一侧),则有点麻烦。
NSDecimalNumber *price = [NSDecimalNumber decimalNumberWithString:@"1.99"];
NSLocale *priceLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"de_DE"] autorelease]; // get the locale from your SKProduct
NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[currencyFormatter setLocale:priceLocale];
NSString *currencyString = [currencyFormatter internationalCurrencySymbol]; // EUR, GBP, USD...
NSString *format = [currencyFormatter positiveFormat];
format = [format stringByReplacingOccurrencesOfString:@"¤" withString:currencyString];
// ¤ is a placeholder for the currency symbol
[currencyFormatter setPositiveFormat:format];
NSString *formattedCurrency = [currencyFormatter stringFromNumber:price];
您具有来使用从SKProduct获取的语言环境。不要使用[NSLocale currentLocale]!