我建立了一个核心数据模型,其中包含3个实体:Exercise、ExerciseSet和Workout。它的设置使得Exercise和ExerciseSet具有一对一关系,而Workout和ExerciseSet具有一对多关系。我试图通过Workout访问ExerciseSet中的属性,但当我运行以下代码时:
struct WorkoutView: View {
@State var workout = Workout()
var body: some View {
Text("Sets in Workout: \(workout.exerciseSets.count)")
ForEach(Array(arrayLiteral: workout.exerciseSets), id: \.self) { e in
Text("Exercise Name: \(e.exercise.exercisename), Reps: \(e.reps), Weight: \(e.weight)")
}
我收到以下错误
Value of type 'NSSet' has no member 'exercise'
Value of type 'NSSet' has no member 'reps'
Value of type 'NSSet' has no member 'weight'
当我在健身程序和健身程序之外调用这些属性时,它们都存在。exerciseSets.count按预期返回。
以下是每个实体的定义:
第一个
为了能够通过“健身程序”访问ExerciseSet中的属性,我是否遗漏了什么?谢谢。
1条答案
按热度按时间waxmsbnn1#
Swift中的
NSSet
不知道底层类型。将
Array(arrayLiteral: workout.exerciseSets)
替换为workout.exerciseSetArray
。必须将
NSSet
转换为原生的Set<ExerciseSet>
才能访问属性。或者--更简单--将exerciseSets
声明为Set<ExerciseSet>
。Core Data可以很好地处理原生的Swift类型。