我的CoreData模型中有两个链接类型。
FlightRecording 和 AHRSMessage
一个 FlightRecording 链接到许多 AHRSMessages 。
我一直在抓取每个录音并迭代其链接的消息:
for (__weak id msgObj in rec.ahrsMessages) {
并没有看到我想要的表现。由于我正在获取实际的录制对象而不是消息,我不相信我可以在fetch上设置批量大小,因此我认为我最好使用正确的谓词格式来获取消息。
假设我的航班录音有NSManagedObjectID
,我可以通过AHRSMessage
快速查询谓词
我已经走到了这么远的地方,并不是那么远:
NSFetchRequest *msgFetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"AHRSMessage" inManagedObjectContext:context];
然后我不知道该怎么做我的谓词。我是否必须匹配实际字段,例如:
"ANY flightRecordings = %@"
或类似的东西?
我是否必须在flightRecording中引用特定字段,或者是否有方法匹配ID?
答案 0 :(得分:1)
如果" flightRecordings"是 AHRSMessage 实体与 to-many 的关系 FlightRecording 然后这应该有效:
NSManagedObjectID *flightRecordingId = ...;
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"AHRSMessage"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY flightRecordings = %@", flightRecordingId];
[fetchRequest setPredicate:predicate];
"ANY flightRecordings = %@"
谓词的参数可以是FlightRecording
对象或 NSManagedObjectID
FlightRecording
个对象。