我正在尝试在SwiftUI中设置一个基本列表,但遇到了编译时错误,这对我来说没有太大意义。这是错误:
无法将类型为“文本”的值转换为闭合结果类型为“ _”
这是我的代码:
final class MainViewModel: BindableObject {
var didChange = PassthroughSubject<MainViewModel, Never>()
var tasks = [Task]() {
didSet {
didChange.send(self)
}
}
}
struct MainView : View {
@ObjectBinding var mainViewModel = MainViewModel()
var body: some View {
List($mainViewModel.tasks) { task in
Text(task.title!) //compile time error here
}
}
}
我认为这很可能是SwiftUI的另一个误导性错误,但我似乎找不到实际的问题。我设置的绑定不正确吗?我想念什么吗?任何帮助将不胜感激...
答案 0 :(得分:1)
您要将Binding
传递到List
。
它需要符合Identifiable
的数据。
您在这里有两个选择:
要么使Task
符合Identifiable
,要么使用.identified(by:)
。
struct Task {
let title: String
}
final class MainViewModel: BindableObject {
var didChange = PassthroughSubject<MainViewModel, Never>()
var tasks = [Task]() {
didSet {
didChange.send(self)
}
}
}
struct MainView : View {
@ObjectBinding var mainViewModel = MainViewModel()
var body: some View {
// HERE
List(mainViewModel.tasks.identified(by: \.title)) { task in
Text(task.title)
}
}
}