【问题标题】:Find an updated NSManagedObject via NSPredicate通过 NSPredicate 查找更新的 NSManagedObject
【发布时间】:2015-01-19 09:53:53
【问题描述】:

我正在使用一些具有关系的 ManagedObjects:客户有很多任务。

在服务器更新期间,我需要更新一些客户并删除一些任务。

显然由于删除了一个任务,相应的客户正在更新。 我调试了它,我可以在 Context 的 updatedObjects 集中找到 Customer。

现在我需要使用 NSPredicate (customerId == 123) 和 FetchRequest 搜索特定客户。 问题是这个请求没有返回结果。很明显是因为客户变了。

这一切都在一种事务中运行,所以我不想保存删除任务和搜索客户之间的上下文。

我做错了什么?或者我该如何处理这种情况?在通过 NSFetchRequest 搜索之前,我可以在上下文中迭代 updatedObjects,但我认为这不是一个好的解决方案?!

【问题讨论】:

  • 获取应该返回更新的客户,即使它尚未保存。您的谓词是否仅引用 customerId?删除任务不应该影响customerId(除非关系的删除规则是“级联”)所以我认为你的问题可能更多地与谓词有关。
  • 不,提取不会返回任何内容。是的,谓词只有“customerId = 123”。

标签: ios objective-c iphone core-data nsmanagedobjectcontext


【解决方案1】:

当您删除任务时,您还需要删除映射

- (void)removeTaskObject:(Task *)value;

【讨论】:

    【解决方案2】:

    我最终获得了用于更改数据的新编辑上下文(删除任务)。并使用主要上下文(尚未受更改影响)进行提取。这是有效的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多