蓝色的表称为Routine
,另一个表称为Exercise
。Routine.exercise
与Many-to-Many
具有Exercise.routine
关系。
我有一个UITableView
,用户可以重新安排商品的顺序,但我在思考一种设计实体的方法时遇到了问题,以便我可以对商品进行重新排序并保存其重新排列位置。
我要订购的是X例程中的练习在UITable中的位置。
例如:例程A已被选择,并且它具有以下顺序的下列项目。
E1
E3
E2
我的问题出在我不能将
order column
放置在Exercise实体中时,因为这是一个Many-to-Many
关系。因此,该练习在不同的例程中将具有不同的位置。我也尽管创建了另一个保存位置数据的实体,但是那意味着我必须创建X列数,同时要记住列数必须大于一个典型的练习数。例行可以的。到目前为止,这是我最可行的选择,但我想知道是否有更好的解决方案,因为将有很多行未使用,并且在存储时将意味着遍历所有空行并以防万一。
谁能想到一种更好的方法,或者在Xcode中有一种更好的方法来将项目的位置存储在UITable中?我可以在字段中存储数组吗?
我正在使用CoreData。
编辑以回答答案:
最佳答案
可以将多对多关系重写为两个一对多关系,中间有一个联接表。也就是说,创建一个ExerciseRoutine表(或更好的名称)来表示Exercise和Routine的匹配,然后在其中放置有关特定关系的任何数据。
较不灵活的方法(因为您当前只想知道例程中的练习顺序)将是将顺序存储为连接到例程的数组。
(但我建议将选项#1作为更好的通用技术。)