为什么在应用程序重启或我两次执行NSBatchDeleteRequest之前不删除条目?

时间:2018-12-17 21:15:24

标签: ios core-data nsmanagedobject nsmanagedobjectcontext nsbatchdeleterequest

我正在读Delete/Reset all entries in Core Data?

如果我按照以下步骤操作,则会得到意外的结果:

  1. 调用下面的代码
  2. 然后在模拟器中查询实体,我将得到一个实体!!!
  3. 如果我再次调用UPDATE `table` SET `somefield`=0 WHERE `somefield` is null (或重新启动),则只有这样才能从核心数据中检索该值

我想念什么?

clearCoreDataStore

1 个答案:

答案 0 :(得分:2)

从持久性存储中删除的对象也可能在内存中对象上下文中。如果是这样,则必须首先更新该内存上下文以反映删除。深入讨论can be found here

简而言之...

deleteRequest.resultType = NSBatchDeleteRequestResultType.resultTypeObjectIDs
let result = try context.execute(deleteRequest) as? NSBatchDeleteResult
let objectIDArray = result?.result as? [NSManagedObjectID]
let changes = [NSDeletedObjectsKey : objectIDArray]
NSManagedObjectContext.mergeChanges(fromRemoteContextSave: changes, into: [context])