我知道以前曾问过有关此错误的问题,但我已经仔细研究了这些问题,没有一个问题能帮助我解决这个特定问题。
我有一个列表,该列表根据特定条件会过滤掉一些项目。在这里:
List(tasks) { task in
if (!self.toggleIsOn) || (!task.completed.status) {
TaskRowView(task)
}
}
一切正常,但是当我添加条件时,它给了我这个错误:
无法推断复杂的闭包返回类型;添加显式类型以消除歧义
在List
行上。我该如何解决?
答案 0 :(得分:1)
我设法通过将返回的值括在Group
中来解决此问题-这意味着即使Group不包含任何内容,返回类型也始终是Group。
List(tasks) { task in
Group {
if (!self.toggleIsOn) || (!task.completed.status) {
TaskRowView(task)
}
}
}
答案 1 :(得分:1)
List希望使用Group这样的每个项目都可以返回一个View,这有点麻烦。
更好地将逻辑从列表中移出
var filteredTasks: [Task] {
return tasks.filter { !self.toggleIsOn || !$0.completed.status }
}
...
List(filteredTasks) { task in
TaskRowView(task)
}
或
List(tasks.filter( { !self.toggleIsOn || !$0.completed.status })) { task in
TaskRowView(task)
}