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
使用的 NSManagedObjectContext
与 objectFromOtherContext 变量的 NSManagedObjectContext
不同。 NSFetchedResultController
不返回任何数据。但是,如果他们使用相同的NSManagedObjectContext
,它会返回一些东西。
如果NSFetchedResultController
的NSManagedObjectContext
与传递给谓词的NSManagedObject
的NSManagedObjectContext
不同,有没有办法按ObjectId
过滤? (假设对象已经保存在持久存储中)。
【问题讨论】:
这是您的实际代码吗?应该是objectID
,而不是ObjectId
。
不,我只是输入了它,但实际代码与它相似,只是语法错误。
【参考方案1】:
我今天遇到了这个问题。您不能在不同上下文中创建的谓词中使用对象,甚至不能使用它的 objectID。您需要先在要搜索的同一上下文中查询对象。或者你可以尝试做 [newContext objectWithID:objectFromOtherContext.ObjectId] 然后在你的谓词中使用它。
【讨论】:
以上是关于Objective-c NSPredicate - 按不同 NSManagedObjectContext 中的 ObjectId 过滤的主要内容,如果未能解决你的问题,请参考以下文章
Objective-c NSPredicate - 按不同 NSManagedObjectContext 中的 ObjectId 过滤