我需要一种将价格从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]!

10-06 13:01