设计& logic - 保存重新排序的UITable行的最有效方法

时间:2013-05-18 12:48:12

标签: objective-c xcode cocoa-touch cocoa core-data

enter image description here

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

Routine.exerciseMany-to-ManyExercise.routine的关系。

我有一个UITableView,用户可以重新安排项目的顺序,我在设计我的实体时遇到问题,以便我可以对它们进行重新排序。保存重新订购的位置。

我想要订购的是X Routine中练习的UITable中的位置。

例如:已经选择了例程A,它按以下顺序包含以下项目。

E1
E3
E2

我的问题出现在我无法在练习实体中放置order column因为是Many-to-Many关系。因此,这种练习在不同的程序中会有不同的位置。

我也在创建一个不同的实体来保存位置数据,但这意味着我必须创建X列的数量,因为列的数量必须大于典型的数量例行公事可以进行的练习。这是迄今为止我最可行的选择,但我想知道是否有更好的解决方案,因为会有很多行未使用,而存储它将意味着循环遍历所有空的并取消它们以防万一。

有人能想出更好的方法,还是有更好的方法在Xcode中存储UITable项目的位置?我可以在一个字段中存储数组吗?

我正在使用CoreData。

编辑回答: enter image description here

1 个答案:

答案 0 :(得分:1)

多对多关系可以重写为两个一对多关系,中间有一个连接表。也就是说,创建一个ExerciseRoutine表(或更好的名称),表示练习和例程的匹配,并在其中放置有关特定关系的任何数据。

灵活性较低的方式 - 因为您目前只想知道例程中练习的顺序 - 将命令存储为连接到例程的数组。

(但我建议选项#1作为一种更好的通用技术。)