首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSIncrementalStore被NSSaveChangesRequest.deletedObjects == 0调用

NSIncrementalStore被NSSaveChangesRequest.deletedObjects == 0调用
EN

Stack Overflow用户
提问于 2015-03-04 10:26:32
回答 1查看 150关注 0票数 1

我正在编写一个由REST服务支持的NSIncrementalStore。它对POSTing和GETing对象很好地工作,但是当DELETEing对象时,我遇到了以下问题:

  1. 测试调用[context delete: object];
  2. context.deletedObjects包含object (正如人们所预料的)
  3. 测试调用[context save: &error];
  4. iOS用一个NSSaveChangesRequest调用NSIncrementalStoreexecuteRequest:withContext:error:;当调用同时到达context.deletedObjects == nilsaveChangesRequest.deletedObjects == nil时,所以我的代码无法找到要从服务器中删除哪些对象。

在调用上下文的deletedObjects和调用它的NSIncrementalStore之间,如何将nil设置为save

UPDATE可能的原因:object.objectID仍然是跟踪savetemporaryIDNSIncrementalStore目前正在从newObjectIDForEntity:referenceObject:获取对象is,而苹果文档的描述似乎还不适用:

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-04 11:41:51

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

这解决了NSIncrementalStore中的问题

  • executeRequest:withContext:error:接收到NSSaveChangesRequest时,它用referenceObjectForObjectID:从保存的对象中提取(在我的例子中)引用字符串,并将这些字符串(以及对象的其他属性)存储在服务器上。
  • executeRequest:withContext:error:接收到NSFetchRequest时,它从服务器获得引用字符串(以及对象的其他属性),并使用[context objectWithID: [self newObjectIDForEntity: entity referenceObject: referenceString]]重新创建对象。
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28852041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档