gpt4 book ai didi

swift - SwiftUI 中 ObjectBinding 和 List 的误导性错误

转载 作者:行者123 更新时间:2023-11-28 05:41:34 25 4
gpt4 key购买 nike

我正在尝试在 SwiftUI 中设置一个基本列表,但我遇到了一个对我来说意义不大的编译时错误。这是错误:

Cannot convert value of type 'Text' to closure result type '_'

这是我的代码:

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 的另一个误导性错误,但我似乎无法找到真正的问题所在。我是否错误地设置了绑定(bind)?我错过了什么吗?任何帮助将不胜感激...

最佳答案

您正在将 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)
}
}
}

关于swift - SwiftUI 中 ObjectBinding 和 List 的误导性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56573246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com