调用数组中的初始化程序没有完全匹配(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)的主要内容,如果未能解决你的问题,请参考以下文章

使用格式参数时,Swift 中的字符串初始值设定项问题

在 Swift 中调用实例方法错误消息没有完全匹配

调用实例方法“tableView”没有完全匹配

如何修复 Xcode 中的这 15 个错误? ...语义问题和初始化没有匹配的构造函数?

集合与数组

sql 多对多查询结果仅当仅匹配且完全匹配数组中的所有项目时