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

10-08 05:31