我的核心数据模型中有两个类:Sample
和Photo
1:N关系.我NSManagedObjectContext
在我的应用程序中使用了一个用作托管对象的便笺簿.因此,我总是在上下文中插入最近创建的对象.如果用户选择放弃她的更改,我只需回滚上下文.否则,保存上下文.
错误
CoreData:错误:将托管对象0x1704253a0(0x1702a1560)从其上下文中删除后进行变更.
Photo
从上下文中删除对象后,将在控制台中打印.删除在上下文保存之前发生,因此Photo
objectID
是临时的.这是快速代码:
function addPhoto(to sample: Sample) -> Photo { let photo = Photo(context: managedObjectContext) sample.addToPhotos(photo) photo.sample = sample return photo } function remove(photo: Photo) { photo.sample.removeFromPhotos(photo) photo.sample = nil managedObjectContext.delete(photo) } //user adds new Photo let sample = loadSample() //sample is loaded from database let photo = addPhoto(to: sample) //later on user decides to remove the added Photo before the context is saved remove(photo: photo)
奇怪的是,没有抛出错误或异常,我的代码完成到最后.但是,错误消息将打印在控制台上.
我相信这是因为上下文Photo
在实际删除它之前使所有属性无效.我知道属性是无效的,因为我添加了观察者.
如何防止此错误显示在控制台中?
谢谢.