【问题标题】:When to use fetch property in the core data with example in a cross-store scenario何时在核心数据中使用 fetch 属性,以跨存储场景为例
【发布时间】:2012-11-16 09:14:53
【问题描述】:

我遇到了和here一样的问题

如何实现一个商店中的实体与其他实体之间的关系?

请指导我完成此操作。

【问题讨论】:

    标签: iphone objective-c ios core-data fetched-properties


    【解决方案1】:

    在某些情况下,跨存储拆分对象确实是可能的并且完全有意义

    假设 obj A 在 Store #1 中,obj B 在 Store #2 中。
    每个A有N个B

    最简单的解决方案可能是 A ... 上的 TRANSIENT 属性,名为 'allMyBs'
    然后在代码中实现获取:

    - (NSArray*)allMyBs {
       NSFetchRequest *r == ... //setup to fetch Entity B
       [CoreDataHelper managedObjectContextForStore2] executeFetchRequest:r];
    }
    

    这不是获取的属性,但很容易

    查看Cross-Store weak relationship with Fetched Properties?了解复杂的方法^^

    【讨论】:

      【解决方案2】:

      简短的回答是你不能。您不能在跨持久存储的托管对象之间建立关系。

      但是,您可以在模型中实现您跨商店维护的键或标识符,并使用它在不同商店中查找“相关”对象。

      如果您在一个商店中有用户记录,而在另一个商店中有应用程序数据,则应用程序记录可能有一个“belongsTo”属性,其值是与用户商店中的用户记录对应的用户 ID。

      Apple 的文档对此非常具体:

      From the Core Data Programming Guide: “Core Data 不允许您创建跨商店的关系。如果您需要创建从一个商店中的对象到另一个商店中的对象的关系,您应该考虑使用获取的属性。”

      Again, from the Core Data Programming Guide: “您必须注意不要在一个持久存储中的实例与另一个持久存储中的实例之间创建关系,因为 Core Data 不支持这一点。如果您需要在不同存储中的实体之间创建关系,您通常使用获取的属性(请参阅“获取的属性”)。”

      这正是我上面所说的。如果您以这种方式实现获取的属性,则由您来维护图形的完整性。同一个文档将引导您创建和使用获取的属性。也许您可以更具体地了解您需要回答的内容。

      【讨论】:

      • 我可以使用获取的属性实现交叉关系,它在苹果文档中提供。你能用适当的例子解释一下获取的属性吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 2012-03-17
      • 2011-05-13
      相关资源
      最近更新 更多