NSPredicate获取coredata

时间:2014-04-14 20:42:22

标签: ios objective-c core-data

我的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?

1 个答案:

答案 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个对象。