我正在编写一个由REST服务支持的NSIncrementalStore。它对POSTing和GETing对象很好地工作,但是当DELETEing对象时,我遇到了以下问题:
[context delete: object];context.deletedObjects包含object (正如人们所预料的)[context save: &error];NSSaveChangesRequest调用NSIncrementalStore的executeRequest:withContext:error:;当调用同时到达context.deletedObjects == nil和saveChangesRequest.deletedObjects == nil时,所以我的代码无法找到要从服务器中删除哪些对象。在调用上下文的deletedObjects和调用它的NSIncrementalStore之间,如何将nil设置为save
UPDATE可能的原因:object.objectID仍然是跟踪save的temporaryID。NSIncrementalStore目前正在从newObjectIDForEntity:referenceObject:获取对象is,而苹果文档的描述似乎还不适用:
插入到托管对象上下文中的新对象被分配一个临时ID,一旦将对象保存到持久存储区,该ID将被替换为永久ID。
发布于 2015-03-04 11:41:51
问题是,我还没有在服务器上存储足够的信息,以便在获取期间重新创建(永久的)对象ID。
这解决了NSIncrementalStore中的问题
executeRequest:withContext:error:接收到NSSaveChangesRequest时,它用referenceObjectForObjectID:从保存的对象中提取(在我的例子中)引用字符串,并将这些字符串(以及对象的其他属性)存储在服务器上。executeRequest:withContext:error:接收到NSFetchRequest时,它从服务器获得引用字符串(以及对象的其他属性),并使用[context objectWithID: [self newObjectIDForEntity: entity referenceObject: referenceString]]重新创建对象。https://stackoverflow.com/questions/28852041
复制相似问题