我在 SwiftUI 中寻找 DataStore 的示例并找到了这个示例。
import SwiftUI
import Combine
class MyDatabase: ObservableObject {
let didChange = PassthroughSubject<MyDatabase, Never>()
var contacts: [Contact] = [
Contact(id: 1, name: "Anna"), Contact(id: 2, name: "Beto"),
Contact(id: 3, name: "Jack"), Contact(id: 4, name: "Sam")
] {
didSet {
didChange.send(self)
}
}
struct Contact: Identifiable{
var id: Int
var name: String
}
}
struct ContactsList: View {
@EnvironmentObject private var database: MyDatabase
var body: some View {
NavigationView {
List($database.contacts) { contact in
NavigationLink(destination: ContactDetail(contact: contact)) {
Text(verbatim: contact.value.name)
//here Error 1: Types of expression....
}
}
.navigationBarTitle(Text("Contacts"))
}
}
}
struct ContactDetail: View {
@Binding var contact: MyDatabase.Contact
var body: some View {
VStack {
TextField($contact[\.name])
.textFieldStyle(.roundedBorder)
.font(.title)
.padding()
//here Error 2: Types of expression....
Spacer()
}
.navigationBarTitle(Text("Edit"), displayMode: .inline)
}
}
但是,经过测试,我多次收到以下错误:
在没有更多上下文的情况下,表达式的类型是模棱两可的
我还尝试了相同解决方案的以下教程https://mecid.github.io/2019/07/03/managing-data-flow-in-swiftui/ 但我遇到了同样的错误。最新测试版中的绑定有什么变化吗?我正在运行 Beta 6