蓝色的表称为Routine,另一个表称为Exercise

Routine.exerciseMany-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作为更好的通用技术。)

09-07 13:56