当我调用deleteObject时,prepareForDeletion被调用一次,而当我保存时,第二次被调用

时间:2012-06-30 00:51:38

标签: ios core-data cs193p

使用额外信息进行编辑: 我正在使用基于cs193p的CoreDataTableViewController的应用。 当我删除名为Position的实体的实例时,会立即调用prepareForDeletion。但是当我调用saveToURL或者数据库被自动保存时,会再次调用prepareForDeletion

这是应该的样子吗?我能预防吗?

2 个答案:

答案 0 :(得分:0)

设置BOOL isDeleting并检查进程是否已在运行。

实施例

- (void) prepareForDeletion
{
    if ( isDeleting ) 
        return;


    /* handle the rest of the deleting process */
    isDeleting = YES;


    if ( /* the process has finished deleting */ )
        isDeleting = NO;
}

答案 1 :(得分:0)

它可能是应该的样子。 UIManagedDocument使用两个ManagedObjectContexts。子上下文(document.managedObjectContext)保存时,它会对其父上下文执行此操作。当父节点保存到持久存储时,父上下文中的对象将立即调用它们的prepareForDeletion