Objective-c NSPredicate - 按不同 NSManagedObjectContext 中的 ObjectId 过滤

Posted

技术标签:

【中文标题】Objective-c NSPredicate - 按不同 NSManagedObjectContext 中的 ObjectId 过滤【英文标题】:Objective-c NSPredicate - Filter by ObjectId across different NSManagedObjectContext 【发布时间】:2012-12-30 16:36:06 【问题描述】:

我正在使用下面的代码和我的NSFetchedResultController

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.objRelationship.ObjectId == %@", objectFromOtherContext.ObjectId];
[fetchRequest setPredicate:predicate];

NSFetchedResultController 使用的 NSManagedObjectContextobjectFromOtherContext 变量的 NSManagedObjectContext 不同。 NSFetchedResultController 不返回任何数据。但是,如果他们使用相同的NSManagedObjectContext,它会返回一些东西。

如果NSFetchedResultControllerNSManagedObjectContext 与传递给谓词的NSManagedObjectNSManagedObjectContext 不同,有没有办法按ObjectId 过滤? (假设对象已经保存在持久存储中)。

【问题讨论】:

这是您的实际代码吗?应该是objectID,而不是ObjectId 不,我只是输入了它,但实际代码与它相似,只是语法错误。 【参考方案1】:

我今天遇到了这个问题。您不能在不同上下文中创建的谓词中使用对象,甚至不能使用它的 objectID。您需要先在要搜索的同一上下文中查询对象。或者你可以尝试做 [newContext objectWithID:objectFromOtherContext.ObjectId] 然后在你的谓词中使用它。

【讨论】:

以上是关于Objective-c NSPredicate - 按不同 NSManagedObjectContext 中的 ObjectId 过滤的主要内容,如果未能解决你的问题,请参考以下文章

Objective-c NSPredicate - 按不同 NSManagedObjectContext 中的 ObjectId 过滤

在 NSPredicate 中比较整数和字符串

objective-c 空 NSArray 错误

Objective-C中的领域日期范围查询

复合谓词 NSPredicate

NSPredicate 101:将 NSPredicate 与自定义对象的 NSMutableArray 一起使用