【发布时间】:2018-11-26 04:25:25
【问题描述】:
我很犹豫地问这个问题,因为我知道这可能是一个愚蠢的问题。
我正在返回一个领域结果,然后继续尝试将其转换为正常的字符串(放入文本标签)。
但是我收到了一个错误'init' has been renamed to 'init(describing:)'。
当我尝试改用描述方法时,标签会在其中打印"Optional",这显然不是我想要的。
我不能使用有什么原因吗:
previousTimeLabel.text = String(lastRecord?.time)
我确定我以前做过这个并且很好,我错过了什么吗? (lastRecord.time 是一个 Int)。
我在这里检查了关于插值Swift String Interpolation displaying optional? 的答案,并尝试更改为这样的内容:
if let previousRounds = String(lastRecord?.rounds) {
previousRoundsLabel.text = previousRounds
}
但得到同样的错误 + Initializer for conditional binding must have Optional type, not 'String'
【问题讨论】:
-
谢谢你会检查出来 - 我不明白我的代码中的其他地方有 cell.repsNumber.text = String(exerciseName.reps) 工作正常!
-
这个问题与 Realm 或变量是
Int无关。这是因为lastRecord是Optional,因此由于可选链接,lastRecord?.time也是Optional。 -
好的谢谢 - 但我不明白为什么这意味着我不能转换为字符串(抱歉 - 我还是很新,我可能在这里遗漏了一些明显的东西) - 我已经还尝试使用 !但这不起作用
-
出于某种原因,我已将您的问题标记为重复。他们的答案显示了解决您的问题的几种方法。您必须使用默认值、可选绑定或强制解包来解包 Optional,如链接问题的答案中所述。您根本没有投射,投射是使用
as关键字完成的。您通过调用其指定的初始化程序将值转换为String。转换成功,没有错误。