在Core Data中获取和更新,或创建和删除NSManagedObjects?

时间:2013-12-20 06:27:57

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

我只是好奇,想知道以下是否有“良好做法”的答案:

如果我在Core Data中有一个轻量级NSManagedObject子类,其中对象将被频繁地创建和删除,并且子类本身相当简单(例如,一个关系,最小属性),是否建议根据需要创建和删除实例或者根据需要设置和取消设置现有实例?

,例如,假设我们有一个名为Tag的理论NSManagedObject子类,它与另一个子类MyObject有关系。 MyObject可以有多个Tag个对象,但每个Tag最多只有一个MyObject个对象。 Tag有一个属性text,它是用户设置的NSString。

在上面的例子中,我可以想到两种不同的实现:

  • 创建&销毁:当您需要新的Tag时,您需要创建一个新的Tag。如果要删除Tag,请将其从Core Data中删除。
  • 更新&重新使用:当您需要新的Tag时,首先使用Tag搜索现有的text = nil个对象,并且只创建一个新的Tag对象,如果所有现有Tag 1}}对象被使用。如果要删除Tag,请删除与MyObject对象的关系并设置text = nil

“创建和销毁”似乎更直接,占用了所需的空间,但“更新和重用”最大限度地减少了删除和创建对象的次数。 (我会想象删除Tag上的备用save对象,并跟踪未设置的Tag对象,这样您就不必每次都从核心数据中获取。)

您会推荐哪种实施方案?有没有我想到的不同实现?我问的是错误的问题/没有提供足够的细节吗?

我想我可以制作一个示例Xcode项目并自己测试一下,但我猜你除了简单地优化时间和记忆外,还会有更明智的意见/更多的经验。

1 个答案:

答案 0 :(得分:1)

创建和销毁是最佳实践。当您的应用程序变得更复杂并且存在合并问题时,重用会产生影响。插入和更新之间的成本差异很小。