使用 SKProductDiscount 的 NumberFormatter (_unconditionallyBridgeFromObjectiveC) 时崩溃

Crash using SKProductDiscount's NumberFormatter (_unconditionallyBridgeFromObjectiveC)

使用 Apple 在其文档中正式提供的代码:

extension SKProductDiscount {
    var localizedPrice: String {
        let formatter = NumberFormatter()
        formatter.numberStyle = .currency
        formatter.locale = self.priceLocale  // Line #15 - this is where it crashes
        return formatter.string(from: self.price) ?? ""
    }
}

我有用户崩溃,根据 Crashlytics,这是堆栈跟踪:

令我吃惊的是,这段代码中的所有内容都只是 StoreKit。我已尝试更改为不同的语言环境,但我找不到如何使此崩溃发生。

仅供参考,它恰好发生在有免费介绍性优惠的产品上。所以格式化后的输出字符串是“[€,$,etc]0.00”.

导致崩溃的原因是什么static Locale._unconditionallyBridgeFromObjectiveC(_:)

这是一个 Apple 错误,已在 iOS 12 中修复。iOS 11 的唯一选择是不依赖此动态本地化,而是依赖一些自制逻辑...