[英]Replacing a Core Data property by a new one avoiding Zombie objects
我有两个名为事件和图像的NSManagedObject。 Event类具有一个名为image的属性(也具有逆向关系),该属性由包含Image类的对象的NSSet组成。
从服务器更新事件时,我只想用新的Image NSSet替换旧的Image NSSet,它也可以包含以前存在的Image对象或新的Image对象。 我要做的是:
event.images = [NSSet setWithArray:imagesParser_.imagesArray];
这实现了我的目的,但我担心的是,仍然属于旧NSSet的某些Image对象(现在没有任何Event的任何链接)可能会永久保留在数据库中。 我以为在更新后进行干净的清理(在DB中查找没有Event的Image对象并将其从DB中删除)可以解决此问题,但是我不知道它的效率如何。
非常感谢。
使用coredata删除对象非常快。 我将亲自检查并删除附加到事件中的所有对象,然后添加新对象。
您也可以采用这种方法,并且不经常查看并删除所有图像,而不会发生任何事件。 这只会在将来在没有事件的情况下存在图像(例如您创建需要照片的新型数据)时才成为问题。 确实不是时间或内存密集型。
保持数据库干净是一个好主意,否则将来可能会遇到麻烦。 现在,您付出的任何努力通常都会使您将来受益。 如果您不再需要某个对象,则以某种方式将其删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.