从存储在 Cloudkit 中的核心数据记录中获取实体名称
Get entity name from Core Data record stored in Cloudkit
我有一个包含 3 个实体的核心数据模型:员工、运动员和治疗师。 Employee 是一个抽象实体,因此我在 Xcode 中将 Employee 标记为另外两个实体的父实体。每个实体的 Codegen 设置为 Class Definition
。现在我正在写逻辑...
- 获取所有员工记录[working]
- 循环每条记录[工作]
- 获取记录的实体名称
- 根据实体名称显示不同的 SwiftUI 视图
我卡在 3 上了。我通读了 Apple's documentation 并看到 Cloudkit 向每个名为 CD_entityName
的记录添加了一个属性,其中包含适当的字符串(“运动员”或“治疗师”)在核心数据中定义的实体名称..但我仍然感到困惑。我如何获取记录的实体名称并使用它来通知我的视图逻辑?
由于 CD_entityName
存在于 CloudKit 的数据模型表示中,我是否还需要在我的核心数据模型中为 CD_entityName
创建一个属性?
下面是我的 ContentView.swift
文件。当我尝试构建应用程序时,我收到一条错误消息,提示 Employee has no member 'CD_entityName'.
struct ContentView: View {
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \Employee.date_added, ascending: false)], animation: .default)
private var allEmployees: FetchedResults<Employee>
// * Body * //
var body: some View {
List {
ForEach(allEmployees) { employee in
switch employee.CD_entityName {
case "Athlete":
AthleteRowView(athlete: employee as! Athlete)
case "Sound":
TherapistRowView(therapist: employee as! Therapist)
default:
print("Error: Unknown entityName for record")
}
}
}
} // end Body
} // end ContentView
尝试以下方法
switch employee.entity.name {
case "Athlete":
AthleteRowView(athlete: employee as! Athlete)
case "Sound":
TherapistRowView(therapist: employee as! Therapist)
default:
EmptyView()
}
我有一个包含 3 个实体的核心数据模型:员工、运动员和治疗师。 Employee 是一个抽象实体,因此我在 Xcode 中将 Employee 标记为另外两个实体的父实体。每个实体的 Codegen 设置为 Class Definition
。现在我正在写逻辑...
- 获取所有员工记录[working]
- 循环每条记录[工作]
- 获取记录的实体名称
- 根据实体名称显示不同的 SwiftUI 视图
我卡在 3 上了。我通读了 Apple's documentation 并看到 Cloudkit 向每个名为 CD_entityName
的记录添加了一个属性,其中包含适当的字符串(“运动员”或“治疗师”)在核心数据中定义的实体名称..但我仍然感到困惑。我如何获取记录的实体名称并使用它来通知我的视图逻辑?
由于 CD_entityName
存在于 CloudKit 的数据模型表示中,我是否还需要在我的核心数据模型中为 CD_entityName
创建一个属性?
下面是我的 ContentView.swift
文件。当我尝试构建应用程序时,我收到一条错误消息,提示 Employee has no member 'CD_entityName'.
struct ContentView: View {
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \Employee.date_added, ascending: false)], animation: .default)
private var allEmployees: FetchedResults<Employee>
// * Body * //
var body: some View {
List {
ForEach(allEmployees) { employee in
switch employee.CD_entityName {
case "Athlete":
AthleteRowView(athlete: employee as! Athlete)
case "Sound":
TherapistRowView(therapist: employee as! Therapist)
default:
print("Error: Unknown entityName for record")
}
}
}
} // end Body
} // end ContentView
尝试以下方法
switch employee.entity.name {
case "Athlete":
AthleteRowView(athlete: employee as! Athlete)
case "Sound":
TherapistRowView(therapist: employee as! Therapist)
default:
EmptyView()
}