【发布时间】:2014-03-04 12:46:52
【问题描述】:
我在 Core Data 中有一个 Recipe 对象,它可以容纳一个 Photo 对象。后者包含图像的NSData 属性和一些实用程序属性。
我在更改 Photo 的 Recipe 时遇到了不便:
recipe.photo = [Photo insertIntoContext: ctxt];
如果 recipe.photo 是 nil,则一切正常。但是,如果它以前有Photo 的实例,则该实例将成为“垃圾”,具有nil 配方属性(照片的反比关系)并在保存时导致异常(配方在我的模型中不是可选的)。
因此,我最终不得不做这样的事情:
if(!recipe.photo){
[ctxt deleteObject:recipe.photo);
}
recipe.photo = [Photo insertIntoContext: ctxt];
这看起来非常像手动内存管理,我必须确保正确删除“孤立”Photo。
一定有更好的方法。我做错了什么?
【问题讨论】:
-
它看起来并不糟糕,但这是要走的路。系统应该如何知道您是否可能不想再次重复使用该照片,所以它的行为应该是这样的。
标签: objective-c cocoa-touch cocoa core-data