调用数组中的初始化程序没有完全匹配(Swift/SwiftUI)
Posted
技术标签:
【中文标题】调用数组中的初始化程序没有完全匹配(Swift/SwiftUI)【英文标题】:No exact matches in call to initializer in array (Swift/SwiftUI) 【发布时间】:2021-01-01 14:15:30 【问题描述】:我正在尝试在 ForEach 中显示我的数组,并使用它自己的属性
我有以下数组:
[Exercise(name: "Pull-up", reps: 10, time: 45),
Exercise(name: "Push-up", reps: 10, time: 30),
Exercise(name: "Sit-up", reps: 20, time: 60),])
我可以显示它的名称,但如果我使用 reps 或 time 属性,它会告诉我:
“在调用初始化程序时没有完全匹配”
HStack
Text((workout[value] as! Exercise).reps).foregroundColor(.white) <-- error
Text((workout[value] as! Exercise).name).foregroundColor(.white) <-- works
【问题讨论】:
Text
接受一个字符串。 reps
是一个整数。将其更改为Text(String(workout[value] as! Exercise).reps))
除了@CodeDifferent,Text("\((workout[value] as! Exercise).reps)")
也可以使用
Swift 并不总是给出最清晰的错误信息。 (SwiftUI 也没有。)它有助于将语句分解成一堆更小的语句。首先,将 reps 提取到一个临时变量中,然后使用该值创建一个 Text 对象。这将表明失败的是 Text(Int)
位。 (正如其他人已经指出的那样,Text 的初始化程序需要一个字符串。)
是的,他们确实可以改善一些错误消息
【参考方案1】:
尝试将reps
转换为String
,如下所示:
HStack
Text(String((workout[value] as! Exercise).reps)).foregroundColor(.white)
Text((workout[value] as! Exercise).name).foregroundColor(.white)
【讨论】:
哦,伙计,这样一个基本的解决方案,哈哈,谢谢以上是关于调用数组中的初始化程序没有完全匹配(Swift/SwiftUI)的主要内容,如果未能解决你的问题,请参考以下文章