1

我有两个名为 Event 和 Image 的 NSManagedObject。Event 类有一个名为 images 的属性(也具有反向关系),它由一个包含 Image 类对象的 NSSet 组成。

从服务器更新事件时,我只想用新的 Image NSSet 替换旧的 Image NSSet,它还可以包含以前存在的 Image 对象或新对象。然后我做的是这样的:

event.images = [NSSet setWithArray:imagesParser_.imagesArray];

这实现了我的目的,但我担心仍然属于旧 NSSet 的一些 Image 对象,现在没有任何指向任何事件的链接,可能会永远保留在数据库中。我认为可能在更新后进行清理(在数据库中查找没有事件的图像对象并将它们从数据库中删除)可以解决此问题,但我不知道它的效率如何。

非常感谢。

4

1 回答 1

1

使用 coredata 删除对象非常快。我会亲自检查并删除所有附加到我的事件的对象,然后添加新的对象。

您也可以采取您的方法,不经常检查并删除所有图像,而不会发生任何事件。仅当将来图像可以在没有事件的情况下存在(例如,您创建了一种需要照片的新型数据)时,这才会成为问题。它确实不是时间或内存密集型的。

保持数据库清洁是个好主意,否则将来可能会遇到麻烦。您现在投入的任何努力通常都会使您在未来受益。如果您不再需要某个对象,请以某种方式将其删除。

于 2013-08-29T14:21:47.230 回答