无法将“字符串”类型的值转换为预期的参数类型“ DefaultStringInterpolation”

时间:2019-04-14 10:49:21

标签: swift5

我将Swift 4.2应用程序升级到了Swift 5,但出现此错误。有人知道如何解决吗?

文件使用:GMStepper.swift

错误:无法将“字符串”类型的值转换为预期的参数类型“ 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 个答案:

答案 0 :(得分:2)

您应该这样做:

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)")
    }

答案 1 :(得分:0)

您不应直接致电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)"
    }