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)
}
}