SwiftUI条件列表-无法推断复杂的闭包返回类型

时间:2019-08-16 08:27:33

标签: swift swiftui

我知道以前曾问过有关此错误的问题,但我已经仔细研究了这些问题,没有一个问题能帮助我解决这个特定问题。

我有一个列表,该列表根据特定条件会过滤掉一些项目。在这里:

List(tasks) { task in

    if (!self.toggleIsOn) || (!task.completed.status) {

        TaskRowView(task)

    }

}

一切正常,但是当我添加条件时,它给了我这个错误:

  

无法推断复杂的闭包返回类型;添加显式类型以消除歧义

List行上。我该如何解决?

2 个答案:

答案 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)
}