[英]ForEach NavigationLink with State and Binding
我正在嘗試使用 NavigationLink 生成 ForEach 並使用 State 和 Binding 來傳遞一些實體:
struct ContentView: View {
@Environment(\.managedObjectContext) var moc
@FetchRequest(
entity: MyEntity.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: \MyEntity.name, ascending: true)
]
) var entries: FetchedResults<MyEntity>
var body: some View {
NavigationView {
List {
ForEach(entries, id: \.self) { (entry: MyEntity) in
NavigationLink(destination: DetailView(myEntry: $entry)) {
Text(entry.name!)
}
}.
}
}
}
}
然后是以下視圖:
struct DetailView: View {
@Binding var myEntry: MyEntity
var body: some View {
Text(myEntry.name!)
}
}
問題是我無法將值傳遞給詳細信息視圖,因為錯誤:
Use of unresolved identifier '$entry'
這里有什么問題以及如何解決這個問題?
如果我只有一個簡單的@State
,通過綁定傳遞它沒有問題,但我想/需要在 ForEach 中使用它來獲取FetchedResults
編輯:如果我刪除$
我得到Cannot convert value of type 'MyEntity' to expected argument type 'Binding<MyEntity>'
EDIT2:目的是將一些對象傳遞給 DetailView,然后再將其傳遞回 ContentView
在ForEach
使用以下內容
ForEach(entries, id: \.self) { entry in
NavigationLink(destination: DetailView(myEntry: entry)) {
Text(entry.name!)
}
}
以及DetailView
的以下內容
struct DetailView: View {
var myEntry: MyEntity
var body: some View {
Text(myEntry.name!)
}
}
MyEntity
是類,因此您可以通過引用傳遞對象並在DetailView
更改它,從而更改相同的對象。
FetchedResults<MyEntity> entities
不符合Binding
或DynamicProperty
。 要鍛煉的$
符號必須符合Binding
。
您可以在ObservableObject
創建FetchedResultsController
以獲得與@FetchRequest
相同的功能,並能夠在EnvironmentObject
或ObservedObject
傳遞值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.