Ios 具有状态和绑定的ForEach NavigationLink

Ios 具有状态和绑定的ForEach NavigationLink,ios,swift,binding,swiftui,property-wrapper,Ios,Swift,Binding,Swiftui,Property Wrapper,我正在尝试使用NavigationLink生成ForEach,并使用状态和绑定传递一些实体: struct ContentView: View { @Environment(\.managedObjectContext) var moc @FetchRequest( entity: MyEntity.entity(), sortDescriptors: [ NSSortDescriptor(keyPath: \MyEnti

我正在尝试使用NavigationLink生成ForEach,并使用状态和绑定传递一些实体:

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!)
                    }
                }.
            }
        }
    }
}
问题是我无法将值传递给详细信息视图,因为出现以下错误:

Use of unresolved identifier '$entry'
这里有什么问题,如何解决

如果我只有一个简单的
@State
就可以通过绑定传递它,但是我想/需要在ForEach中为
获取的结果使用它

编辑:如果我删除
$
我得到
无法将类型为“MyEntity”的值转换为预期的参数类型“Binding”


EDIT2:目的是将一些对象传递给DetailView,然后稍后再传递回ContentView

   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
中更改它,您将更改相同的对象。

获取的结果实体
不符合
绑定
动态属性
。对于要训练的
$
符号,必须符合
绑定


您可以在
ObservedObject
中创建
FetchedResultsController
,以获得与
@FetchRequest
相同的功能,并能够在
环境对象
ObservedObject

中传递值,检查ForEach在初始化闭包中提供的条目类型。MyEntity类型是否通过其projectedValue属性提供其绑定?这就是入口前的美元的意思。我不明白。MyEntity是CoreData元素如果我删除$I get:无法将类型为“MyEntity”的值转换为预期的参数类型“Binding”,这是因为您将其定义为DetailView的参数。但我的实体并不具有约束力。使用$entity编译器,因为它不存在。$是projectedValue的快捷方式,请参见属性包装器定义,所以我需要做的是,因为我不仅需要在DetailView中使用它,而且还需要稍后传递回ContentView
struct DetailView: View {
    var myEntry: MyEntity

    var body: some View {
        Text(myEntry.name!)
    }
}