首页 > 解决方案 > 使用 SKProductDiscount 的 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(_:)导致崩溃?

标签: iosswiftlocalestorekit

解决方案


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


推荐阅读