我将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)")
}
答案 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:)
。
讨论
请勿直接调用此初始化程序。当您使用字符串插值创建字符串时,编译器将使用它。代替, 使用字符串插值通过包含值来创建新字符串, 括号内的文字,变量或表达式加前缀 用反斜杠(
\(…)
)。
为什么不简单地将代码编写为:
if self.showIntegerIfDoubleIsInteger && floor(self.value) == self.value {
label.text = "\(Int(self.value))\(self.suffixString)"
} else {
label.text = "\(Int(self.value))\(self.suffixString)"
}