我只是好奇,想知道以下是否有“良好做法”的答案:
如果我在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项目并自己测试一下,但我猜你除了简单地优化时间和记忆外,还会有更明智的意见/更多的经验。
答案 0 :(得分:1)
创建和销毁是最佳实践。当您的应用程序变得更复杂并且存在合并问题时,重用会产生影响。插入和更新之间的成本差异很小。