【问题标题】:Keep ordered images for entity in Core Data在 Core Data 中保留实体的有序图像
【发布时间】:2011-05-23 01:05:46
【问题描述】:

我有一个名为“Person”的实体和一组 UIImages(一对多)。 当用户输入图像时,系统会要求他按照人物生活的时间顺序输入。

当我从 Core Data 保存和恢复数据时,我需要保持图像的顺序。

你建议我怎么做?

10 倍

【问题讨论】:

    标签: iphone objective-c core-data iphone-sdk-3.0 ios4


    【解决方案1】:

    在这种情况下,添加图像的日期时间是您感兴趣的数据,因此它应该包含在您的模型中的某个位置。

    【讨论】:

    • 你的意思是给图像实体添加“日期”属性?好吧,我忘了提到用户可以编辑图像列表 - 这意味着他可以添加新图像并确定它应该是第一个(或第二个等等..)
    • 在这种情况下,Rizon,那么您希望在图像实体上使用单独的 sortOrder 属性,正如我最初在回答中所说的那样。当用户拖放对 Person 的图像进行重新排序时,您需要通过它们的 sortOrder 属性对其重新编号。
    • 并且每次在两者之间输入图像时 - 我需要遍历所有顺序并增加它们的 sortOrder ?
    • 或者直接操作数组并重新编号。我使用名为 -renumberByKey: 的方法在 NSArray 上添加了一个类别,该方法只需为 self 的每个成员设置一个具有当前索引的数字,例如 setValue:[NSNumber numberWithInteger:i] forKey:key]。
    • “直接操作数组”?我到底需要在哪里有一个数组?
    【解决方案2】:

    在您的图像实体上添加并维护一个 sortOrder 属性。为这个属性添加一个排序描述符以保持图像按它排序。出于性能原因,Core Data 不支持有序集合。

    【讨论】:

    • +1 感谢 Paul 注意到日期部分 - 我没有。如果您的模型中已经有它,请使用它而不是单独的排序属性。
    • +1 用于简单地添加排序顺序属性。您必须在插入或删除之后更新每个订购项目的排序顺序,但这应该不会太痛苦。
    • 是的。通常不痛。 :-)
    • 如果 Apple 提供某种方法,通过在 MOM 中指定 order 属性,将关系视为有序集合,那就太好了。
    • ... 因为这样您的所有图像(大)都会在您获取 Person 时加载。那会很糟糕。这个问题让我相信您的字面意思是您将图像放入您的核心数据存储中。为了速度和效率,您应该在商店中存储图像的引用(连同它们的元数据),但图像本身应该单独存储。这样,您就不会一次将所有相关图像加载到内存中。
    猜你喜欢
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多