我只是好奇,想知道是否有一个“良好的做法”的答案如下:提取和更新,或创建和删除核心数据中的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项目并自己测试一下,但我猜测除了简单地优化时间和内存之外,您会有更多的见解/更多体验。