PriceLocale выбрасывает EXC_BREAKPOINT при доступе - PullRequest
0 голосов
/ 06 ноября 2018

Мы используем вступительные цены в нашем приложении. И у нас есть проблема, которую можно воспроизвести только на одном из наших двух устройств QA - iPhone 6S (11.4.1) во французском App Store. Другой - iPhone 7 (12.0 с французским App Store), и приложение не падает.

Мы используем это расширение на основе расширения SKProduct, предоставляемого SwiftyStoreKit:

@available(iOS 11.2, *)
public extension SKProductDiscount {

    public var localizedPrice: String? {
        return priceFormatter(locale: priceLocale).string(from: price)
    }

    private func priceFormatter(locale: Locale) -> NumberFormatter {
        let formatter = NumberFormatter()
        formatter.locale = locale
        formatter.numberStyle = .currency
        return formatter
    }
}

Используется так:

func updateWith(storeProducts: Set<SKProduct>) {
guard
    let selfStoreInfo = storeProducts.filter({ $0.productIdentifier == self.id }).first else {
        Logger.warn(message: "Subscription \(self.id) not found on store", .inAppPurchase)
    return
}

if #available(iOS 11.2, *) {
    if let promo = selfStoreInfo.introductoryPrice {
        promotionId = selfStoreInfo.productIdentifier
        price = promo.localizedPrice
        originalPrice = selfStoreInfo.localizedPrice
    } else {
        price = selfStoreInfo.localizedPrice
    }
} else {
    price = selfStoreInfo.localizedPrice
}
}

При отладке мы обнаружили, что priceLocale отвечает за выдачу EXC_BREAKPOINT.

РЕДАКТИРОВАТЬ Может быть связано с этим: https://bugs.swift.org/browse/SR-7922?attachmentOrder=desc но странно, что он будет работать на нашем iPhone 7, а не на iPhone 6s

...