2

次のようなコアデータモデルがあります。

エンティティは、複数のエンティティ (1 対多の関係) を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" );
    }
4

2 に答える 2

7

指定されたタイプの関連サービスを持つオブジェクトを見つけるには、述語を使用します

[NSPredicate predicateWithFormat:@"ANY services.type == %i",type];

(「サービス」が to-namy 関係の名前であると仮定します)。

于 2013-06-14T13:28:53.150 に答える
2

そのためにはサブクエリを使用する必要があります: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SUBQUERY(service, $service, $service.type == %i).@count) > 0"];.

サブクエリやその他の述語がどのように機能するかについての詳細は、Predicate Programming Guideを参照してください。

于 2013-06-14T13:30:30.330 に答える