Я использую расширения для Double
и NSNumber
для генерации строк, представляющих цены.
extension NSNumber {
internal func getPriceString(currencyCode: String? = nil, numberOfFractionDigits: Int = 2) -> String? {
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .currency
numberFormatter.locale = Locale.current
numberFormatter.currencyCode = currencyCode ?? Locale.current.currencyCode ?? "USD"
numberFormatter.minimumFractionDigits = numberOfFractionDigits
numberFormatter.maximumFractionDigits = numberOfFractionDigits
return numberFormatter.string(from: self)
}
}
extension Double {
public func getPriceString(currencyCode: String? = nil, numberOfFractionDigits: Int = 2) -> String? {
return NSNumber(value: self).getPriceString(currencyCode: currencyCode, numberOfFractionDigits: numberOfFractionDigits)
}
}
Этот код прекрасно работает при добавлении в основной проект. Я могу вызвать метод Double
для номеров, возвращаемых сервером, чтобы получить действительные строки цен. Например:
priceLabel.text = item.price.getPriceString(currencyCode: "EUR", numberOfFractionDigits: 0)
// €1,024
Однако моя цель - переместить эти расширения в модуль, который я могу использовать в нескольких проектах. И когда тот же самый код, добавленный в модуль, вызывается из основного проекта, я получаю ошибку времени выполнения.
Почему это происходит и как я могу это исправить?