在随机“锻炼”可能有5到20个任意数量的练习的情况下,有没有办法在Realm中保存“锻炼对象”,其中有不同数量的值(练习)?
例如我目前有这样的东西作为我的对象模型:
@objc dynamic var workoutID = UUID().uuidString
@objc dynamic var workoutName = ""
@objc dynamic var totalExercisesCount = 0
@objc dynamic var exerciseOne = ""
@objc dynamic var repsExerciseOne = 0
@objc dynamic var exerciseTwo = ""
@objc dynamic var repsExerciseTwo = 0
@objc dynamic var exerciseThree = ""
@objc dynamic var repsExerciseThree = 0
@objc dynamic var exerciseFour = ""
@objc dynamic var repsExerciseFour = 0
@objc dynamic var exerciseFive = ""
@objc dynamic var repsExerciseFive = 0
@objc dynamic var exerciseSix = ""
@objc dynamic var repsExerciseSix = 0
这样可以正常工作,但它也经常使用'null'填充许多字段(例如,如果在特定锻炼中只有3个练习,并且如上所述有6个动态变量) .
它只是一个非常不优雅的解决方案,但不确定是否有更好的方法?
1 回答
您应该使用
List
来存储附加到锻炼课程的动态数量的变量 . 您应该创建一个WorkoutExercise
类,其中包含练习的代表和名称,并在WorkoutSession
模型中存储WorkoutExercise
的列表 .我还建议将
totalExerciseCount
更改为计算属性(这也会使其被忽略,因为您无法在Realm中存储计算属性),因为它的值应始终反映exercises
中的元素数量,并且不需要进行一个持久化的属性,因为你总是可以在没有大量计算成本的情况下重新计算它 .