当前位置:  开发笔记 > 编程语言 > 正文

将托管对象从其上下文中删除后对其进行变换

如何解决《将托管对象从其上下文中删除后对其进行变换》经验,为你挑选了0个好方法。

我的核心数据模型中有两个类:SamplePhoto1: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在实际删除它之前使所有属性无效.我知道属性是无效的,因为我添加了观察者.

如何防止此错误显示在控制台中?

谢谢.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有