我的核心数据模型中有两个类: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
属性无效。我知道属性是无效的,因为我添加了观察者。
如何防止此错误显示在控制台中?
谢谢。