Ios 获取列表中的核心数据实体

Ios 获取列表中的核心数据实体,ios,swift,core-data,swiftui,Ios,Swift,Core Data,Swiftui,我用属性id和名称创建的核心数据User,我希望将其提取到列表中 struct MyView: View { @FetchRequest(entity: User.entity(), sortDescriptors: []) var users: FetchedResults<User> var body: some View { VStack { List { ForEach(users, i

我用属性
id和名称创建的核心数据
User
,我希望将其提取到列表中

struct MyView: View {
    @FetchRequest(entity: User.entity(), sortDescriptors: []) var users: FetchedResults<User>

    var body: some View {
        VStack {
            List {
                ForEach(users, id: \.id) { user in  // Type '_' has no member 'id'
                    // Text(user.name)
                }
            }
        }
    }
}

有时,您需要为要在代码中识别的实体构建项目。下面是加载具有id和名称的CoreData实体用户的代码

struct ContentView: View {
    @Environment(\.managedObjectContext) var context
    @FetchRequest(entity: User.entity(), sortDescriptors: [])
    var users: FetchedResults<User>

    var body: some View {
        List {
            ForEach(users, id: \.id) { user in
                Text("Id = \(user.id), Name = \(user.name ?? "")")
            }
        }
    }
}

引用这个,我创建了一个新的UserRow结构来保存核心数据实体,它对我来说工作正常。但我认为在这种情况下我还缺少一些知识,如果有人能为我解释一下,那将是非常感谢的

// in MyView add the new struct

struct UserRow: View {
    var user: User

    var body: some View {
        Text(user.name ?? "No name given")
    }
}


// then replace the list with

List {
    ForEach(users) { user in
        UserRow(user: user)
    }
}

您使用的是哪个版本的XCode?版本11.3.1。我使用的是同一版本,没有发现任何错误。是否确实为用户实体创建了具有适当类型的名称和id属性?我已经用我的实体的截图更新了答案。请发布一个新问题。如果这段代码对您有效,您认为您缺少什么?我想我们为什么需要创建一个结构来反映核心数据实体,是否可以直接使用实体?您指的是哪个结构?您想在哪里直接使用实体?必须创建结构
var user:user
来保存
var users:FetchedResults
。我似乎不理解您的问题。
extension User: Identifiable {
}

ForEach(users) { user in
    Text("Id = \(user.id), Name = \(user.name ?? "")")
}
// in MyView add the new struct

struct UserRow: View {
    var user: User

    var body: some View {
        Text(user.name ?? "No name given")
    }
}


// then replace the list with

List {
    ForEach(users) { user in
        UserRow(user: user)
    }
}