iOS Core数据如何使用NSPredicate根据一对多子属性查找父对象?

Ale*_*one 2 core-data objective-c one-to-many nspredicate ios

我有一个核心数据模型,如下所示:

一个ServiceProvider实体可以有很多Service实体(一对多的关系).每个服务都有一个type属性.

如何使用实体的type属性Service来搜索ServiceProviders具有该类型服务的实体?

下面是我目前拥有的适用于单个服务关系的示例.如何修改下面的谓词以适用于多个服务?

  NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSManagedObjectContext* context = [HealthDataManager sharedInstance].managedObjectContext;

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"ServiceProvider" inManagedObjectContext:context];
    [fetchRequest setEntity:entity];



    [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"self.service.type == %i",type]];

    NSArray* results = [context executeFetchRequest:fetchRequest error:nil];

    if(results.count>0)
    {
        for(ServiceProvider* provider in results)
        {
            DLog(@"found provider: %@", [provider description ]);
        }
        return [results lastObject];
    }else{
        DLog(@"Creating provider" );
    }
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 7

要查找具有给定类型的任何相关服务的对象,请使用谓词

[NSPredicate predicateWithFormat:@"ANY services.type == %i",type];
Run Code Online (Sandbox Code Playgroud)

(假设"服务"是to-namy关系的名称).