0

这是从商店检索价格的代码的一部分。

NSNumberFormatter * priceFormatter = [NSNumberFormatter new];
[priceFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[priceFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[priceFormatter setLocale:_skProduct.priceLocale];
NSString *price = [priceFormatter stringFromNumber:_skProduct.price];

最终的价格必须在 Cocos2D 中使用位图字体呈现,因为要在其上应用设计效果。问题是 - 在所有可能的语言环境中显示价格所需的完整字符集是什么。然后我将集合放入 GlyphDesigner 并导出字体。由于图集大小有限,我不能放置所有 unicode 字符,所以我只需要显示价格的集合(数字、美元、欧元符号,也许还有一些拉丁字母..)。

4

1 回答 1

4
  1. 创建您的应用内购买可用的国家/地区列表。
  2. 将该列表转换为区域设置标识符的 NSArray。
  3. 遍历该数组并创建一个 NSLocale
  4. 使用此语言环境创建带有 NSNumberFormatter 的价格字符串
  5. 保存您使用过的所有字符。
  6. ???
  7. 利润

这样的事情应该这样做:

NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
nf.numberStyle = NSNumberFormatterCurrencyStyle;
NSMutableSet *set = [NSMutableSet set];

// all available locales, you probably don't need them all
NSArray *availableLocaleIdentifiers = [NSLocale availableLocaleIdentifiers];            

// compile a list of the locales you'll need
availableLocaleIdentifiers = @[ @"de_DE", @"de_CH", @"en_GB", @"en_US", @"ja_JP"];   
for (NSString *localeIdentifier in availableLocaleIdentifiers) {
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:localeIdentifier];
    nf.locale = locale;
    NSString *priceString = [nf stringFromNumber:@(123456789.99)];
    for (NSInteger i = 0; i < [priceString length]; i++) {
        unichar character = [priceString characterAtIndex:i];
        [set addObject:[NSString stringWithFormat: @"%C", character]];
    }
}
NSArray *sorted = [set sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES]]];
NSString *allCharacters = [sorted componentsJoinedByString:@""];

NSLog(@"\"%@\"", allCharacters);

输出:"$',.0123456789CFH £€¥"

于 2013-07-07T15:54:24.947 回答