【问题标题】:prepareForDeletion being called once when I call deleteObject: and a second time when I saveprepareForDeletion 在我调用 deleteObject: 时被调用一次:第二次在我保存时被调用
【发布时间】:2012-06-30 00:51:37
【问题描述】:

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

这是应该的吗?我可以预防吗?

【问题讨论】:

  • 正在使用后台线程吗?
  • 我只使用主线程
  • 您找到解决方案了吗?
  • 我正在使用后台线程@LorenzoB :D 这个问题在 5 年后解决了吗.. :)
  • 把问题从死里复活...我不记得我最终做了什么,抱歉

标签: ios core-data cs193p


【解决方案1】:

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

示例

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


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


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

【讨论】:

  • 这行不通。因为第一个 prepareForDeletion 在第二个开始之前完成。而且它也绕过了问题,我认为并没有真正解决它
【解决方案2】:

这可能是它应该的方式。 UIManagedDocument 使用两个 ManagedObjectContexts。当子上下文 (document.managedObjectContext) 保存时,它会对其父上下文进行保存。当父级保存到持久存储时,父级上下文中的对象将依次调用其prepareForDeletion

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    相关资源
    最近更新 更多