1

我正在编写一个NSIncrementalStore由 REST 服务支持的程序。它适用于 POST 和 GETing 对象,但是在删除它们时我遇到以下问题:

  1. 测试电话[context delete: object];
  2. context.deletedObjects包含object(正如人们所期望的那样)
  3. 测试电话[context save: &error];
  4. iOS用;调用NSIncrementalStores 当呼叫同时到达和时,我的代码无法找出要从服务器中删除哪些对象。executeRequest:withContext:error:NSSaveChangesRequestcontext.deletedObjects == nilsaveChangesRequest.deletedObjects == nil

deletedObjects设置nil在对上下文的save调用和它的调用之间怎么会发生NSIncrementalStore

UPDATE可能的原因:object.objectID仍然是temporaryID以下save. 目前NSIncrementalStore正在从中获取对象 ID,newObjectIDForEntity:referenceObject:并且 Apple文档中的描述似乎还不适用:

插入托管对象上下文的新对象被分配一个临时 ID,一旦对象被保存到持久存储,该临时 ID 将替换为永久 ID。

4

1 回答 1

-1

问题是我还没有在服务器上存储足够的信息来在提取期间重新创建(永久)对象 ID。

这解决了以下问题NSIncrementalStore

  • executeRequest:withContext:error:收到一个NSSaveChangesRequest它从保存的对象中提取(在我的情况下)引用字符串referenceObjectForObjectID:并将这些(连同对象的其他属性)存储在服务器上。

  • executeRequest:withContext:error:接收到时,NSFetchRequest它从服务器获取引用字符串(以及对象的其他属性)并使用 重新创建对象[context objectWithID: [self newObjectIDForEntity: entity referenceObject: referenceString]]

于 2015-03-04T11:41:51.803 回答