假设我有一个庞大的应用程序购买产品目录,以不同的价格层级设置。产品将在多个地区销售,因此需要以正确的货币显示价格。
有没有办法我可以(从iTunes)在给定国家(当然是用户iTunes帐户国家)给定价格等级的货币价值?
目前,我能看到的唯一方法是向苹果发送产品信息请求,以获取给定价格层的产品第一次出现,然后存储此结果。
作为一个附带问题:我知道我可以使用我的服务器返回货币/等级组合的价格,但我担心 Apple 调整应用内价格的可能性。有没有可能发生这种情况?
extension SKProduct {
    var localizedPriceString: String? {
        let formatter = NumberFormatter()
        formatter.formatterBehavior = .behavior10_4
        formatter.numberStyle = .currency
        formatter.locale = priceLocale
        return formatter.string(from: price)
    }
}
检查SKProduct处理价格属性的文档,那里有示例代码可以为您完成。
五年后不再陈旧的链接中的代码:(略微适应 Swift 3.0 和风格):
    let numberFormatter = NumberFormatter()
    numberFormatter.formatterBehavior = .behavior10_4
    numberFormatter.numberStyle = .currency
    numberFormatter.locale = someProduct.priceLocale
    let formattedString = numberFormatter.string(from: someProduct.price)
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
    [numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    [numberFormatter setLocale:product.priceLocale];
    NSString *formattedString = [numberFormatter stringFromNumber:product.price];
最后一件事:NumberFormatter对象很昂贵(在时间和资源方面),因此如果您希望经常使用它,请考虑在某处缓存一个。