2013-12-20 28 views
1

我只是好奇,想知道是否有一个“良好的做法”的答案如下:提取和更新,或创建和删除核心数据中的NSManagedObjects?

如果我有一个轻量级的NSManagedObject子类在核心数据中的对象将被创建和删除相当频繁的子类本身相当简单(例如,一个关系,最小属性),建议根据需要创建和删除实例,或根据需要设置和取消设置现有实例?例如,我们有一个名为Tag的理论NSManagedObject子类与另一个子类MyObject有关系。 MyObject可以有多个Tag对象,但每个Tag最多只有一个MyObject对象。 Tag有一个属性,text,它是用户设置的NSString。

在上述情况下,我能想到的两种不同的实现方式:

  • 创建&销毁:当你需要一个新的Tag,创建一个新的Tag。如果您想要删除Tag,请将其从核心数据中删除。
  • 更新&重用:当你需要一个新的Tag,你对现有Tag对象与text = nil且仅当使用所有现有Tag对象来创建一个新的Tag对象优先搜索。如果要删除Tag,请将其与MyObject对象的关系删除,并设置text = nil

“创建&销毁”似乎更简单,因为它需要占用完全一样的空间,但“更新&回用”最大限度地减少您删除和创建对象的次数。 (我会想象一个save删除备用Tag物体并可同时跟踪未设置Tag的对象,这样你就不必从核心数据,每次取。)你会建议

哪一个实现?我还没有想到有不同的实现吗?我问错误的问题/没有提供足够的细节?

我想我可以制作一个示例Xcode项目并自己测试一下,但我猜测除了简单地优化时间和内存之外,您会有更多的见解/更多体验。

回答

1

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