0

我将我的 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)")
        }
4

2 回答 2

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)")
    }
于 2019-04-15T11:50:29.157 回答
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)"
    }
于 2019-04-14T16:06:21.163 回答