#swift5
#swift5
Вопрос:
Я обновил свое приложение swift 4.2 до Swift 5 и получаю эту ошибку. Кто-нибудь знает, как исправить?
Файл с использованием: GMStepper.swift
Ошибка: не удается преобразовать значение типа ‘String’ в ожидаемый тип аргумента ‘DefaultStringInterpolation’
if self.showIntegerIfDoubleIsInteger amp;amp; floor(self.value) == self.value {
label.text = String(stringInterpolation: "(Int(self.value))(self.suffixString)")
} else {
label.text = String(stringInterpolation: "(Int(self.value))(self.suffixString)")
}
Ответ №1:
Вы должны сделать так :
if self.showIntegerIfDoubleIsInteger amp;amp; floor(self.value) == self.value {
let intValue = Int(self.value)
label.text = String(stringInterpolation: "(intValue)(self.suffixString)")
} else {
let intValue = Int(self.value)
label.text = String(stringInterpolation: "(intValue))(self.suffixString)")
}
Ответ №2:
Вы не должны вызывать String.init(stringInterpolation:)
напрямую.
Обсуждение
Не вызывайте этот инициализатор напрямую. Он используется компилятором при создании строки с использованием интерполяции строк. Вместо этого используйте интерполяцию строк для создания новой строки, включая значения, литералы, переменные или выражения, заключенные в круглые скобки, с префиксом обратной косой черты (
(…)
).
Почему бы вам просто не написать свой код как:
if self.showIntegerIfDoubleIsInteger amp;amp; floor(self.value) == self.value {
label.text = "(Int(self.value))(self.suffixString)"
} else {
label.text = "(Int(self.value))(self.suffixString)"
}