【问题标题】:duplicate NSManagedObject重复的 NSManagedObject
【发布时间】:2012-03-06 01:12:51
【问题描述】:

我在我的应用程序中使用CoreData,并且我有一组“卡”实体。玩家可以在他的牌组中拥有多张相同的牌(它仍然是从数据库中提取的同一张牌,但两次添加到数组中)。

当我想修改其中一张重复卡片的某个方面时,我的问题出现了。它们都是NSManagedObjects 的子类,其中有一些自定义属性(未保存到数据库中)。例如,当我在数组中的一张卡片上设置其中一个自定义属性时,它也会在数组中的另一张卡片中更改,因为entityForName:inManagedObjectContext: 返回相同的对象并且不加载新对象。

基本上我需要的是,每次调用entityForName:inManagedObjectContext: 时,我都会获得同一个实体的一个新实例,这样当我在一个中修改自定义属性时,它不会在另一个中被修改。如果实体已经创建但它不起作用,我已经尝试使用 [实体副本]。

提前感谢您的帮助!

【问题讨论】:

    标签: ios core-data nsmanagedobject nsmanagedobjectcontext


    【解决方案1】:

    Core Data 是持久存储,而不是数据库。因此,无论您要求多少次,detre 都确保您得到完全相同的对象。这些不是来自数据库的快照,如果您编写了一些自定义 SQL 代码,它们可能是真实的活动对象。

    考虑到这一点,您需要做的就是配置您的核心数据架构以匹配您的逻辑架构——我猜您应该拥有与 Card 一对多关系的 CardInstance,而您'd 创建 CardInstances 用于当您从卡组中拉出卡片时 - 或编写一些代码以从获取的卡片中读取到快照对象中,就像您手动使用 SQL 或其他方式一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      相关资源
      最近更新 更多