Невозможно преобразовать значение типа 'String' в ожидаемый тип аргумента 'DefaultStringInterpolation' - PullRequest
0 голосов
/ 14 апреля 2019

Я обновил свое приложение Swift 4.2 до Swift 5, и я получаю эту ошибку.Кто-нибудь знает, как исправить?

Файл с помощью: GMStepper.swift

Ошибка: невозможно преобразовать значение типа 'String' в ожидаемый тип аргумента 'DefaultStringInterpolation'

if self.showIntegerIfDoubleIsInteger && floor(self.value) == self.value {
            label.text = String(stringInterpolation: "\(Int(self.value))\(self.suffixString)")
        } else {
            label.text = String(stringInterpolation: "\(Int(self.value))\(self.suffixString)")
        }

Ответы [ 2 ]

2 голосов
/ 15 апреля 2019

Вы должны сделать так:

if self.showIntegerIfDoubleIsInteger && 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)")
    }
0 голосов
/ 14 апреля 2019

Вы не должны вызывать String.init(stringInterpolation:) напрямую.

init(stringInterpolation:)

Обсуждение

Не вызывайте этот инициализатор напрямую.Он используется компилятором при создании строки с использованием строковой интерполяции.Вместо этого используйте строковую интерполяцию для создания новой строки путем включения значений, литералов, переменных или выражений, заключенных в скобки, с префиксом обратной косой черты (\(…)).

Почему бы вам просто не написатьВаш код как:

    if self.showIntegerIfDoubleIsInteger && floor(self.value) == self.value {
        label.text = "\(Int(self.value))\(self.suffixString)"
    } else {
        label.text = "\(Int(self.value))\(self.suffixString)"
    }
...