【问题标题】:design & logic - Most efficient way to save reordered UITable rows设计和逻辑 - 保存重新排序的 UITable 行的最有效方法
【发布时间】:2013-05-13 12:43:11
【问题描述】:

蓝色表名为Routine,另一张名为Exercise

Routine.exerciseExercise.routine 具有Many-to-Many 关系。

我有一个UITableView,用户可以重新排列项目的顺序,但我在思考如何设计我的实体以便我可以重新排序它们并保存它们的重新排序位置时遇到问题。

我要订购的是 X 例程中练习的 UITable 中的位置。

例如:例程 A 已被选中,并按以下顺序包含以下项目。

E1
E3
E2

当我不能在练习实体中放置order column 时,我的问题就出现了,因为这是Many-to-Many 关系。因此,该练习将在不同的例程中具有不同的位置。

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

谁能想到更好的方法,或者在 Xcode 中是否有更好的方法来存储 UITable 中项目的位置?我可以在字段中存储一个数组吗?

我正在使用 CoreData。

编辑以回应答案:

【问题讨论】:

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


    【解决方案1】:

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

    不太灵活的方法——因为您目前只想知道例程中练习的顺序——将顺序存储为一个数组,连接到例程。

    (但我推荐选项 #1 作为更好的通用技术。)

    【讨论】:

    • 我更新了答案以包含您引用的连接表。你是这个意思吗?我还在常规和练习表中添加了删除级联规则。你觉得这样可以吗??还有....如何存储数组?
    • 您的ExerciseOrder 应该与例程和练习之间存在一对一关系,这与来自其他实体的一对多关系相反,而不是您的独立对多关系'正在显示,但除此之外,我认为您正朝着正确的方向前进。
    猜你喜欢
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    相关资源
    最近更新 更多