我的CoreData模型中有两个链接类型。
FlightRecording和AHRSMessage
一个FlightRecording链接到许多AHRS消息。
我一直在获取每个记录并通过其链接消息进行迭代:for (__weak id msgObj in rec.ahrsMessages) {
并没有看到我想要的性能。因为我要获取实际的记录对象而不是消息,所以我不相信可以在获取中设置批处理大小,因此我认为我最好使用正确的谓词格式来获取消息。
假设我的飞行记录有NSManagedObjectID
,是否有一种快速的方法可以对AHRSMessage
进行谓词查询
我已经走到很远了:
NSFetchRequest *msgFetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"AHRSMessage" inManagedObjectContext:context];
然后我不确定要为谓词做什么。我是否必须在实际字段上进行匹配,例如:
"ANY flightRecordings = %@"
或类似的东西?我是否必须在flightRecording中引用特定字段,或者有什么方法可以仅在ID上进行匹配?
最佳答案
如果“ flightRecordings”是从AHRSMessage实体到
FlightRecording然后这应该工作:
NSManagedObjectID *flightRecordingId = ...;
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"AHRSMessage"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY flightRecordings = %@", flightRecordingId];
[fetchRequest setPredicate:predicate];
"ANY flightRecordings = %@"
谓词的参数可以是FlightRecording
对象或NSManagedObjectID
对象的FlightRecording
。