2012-02-04 20 views
-1

コアデータを使用してiOS 5アプリケーションを作成しています。コアデータ:NSPredicate with managed objects

私はItemは多くのカテゴリに属し、Categoryは多くのアイテムを有し、すなわち、これら2つのエンティティ間の多対多の関係が存在するCategory 2つのエンティティItemを有しており。

私がしようとしていることは、あるカテゴリが与えられていると、そのカテゴリのアイテムが関連付けられているすべてのカテゴリを知りたいということです。そのために、私は以下のリクエストを実行しようとしています:

NSEntityDescription *catEntity = [NSEntityDescription entityForName:@"Category" inManagedObjectContext:context]; 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
request.entity = catEntity; 
request.predicate = [NSPredicate predicateWithFormat:@"items IN %@",[category.items allObjects]]; 
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];  
NSError *error = nil; 
NSArray *categories = [context executeFetchRequest:request error:&error]; 

をしかし、これを実行したときに、私は次のエラーを取得:

'NSInvalidArgumentException', reason: 'unimplemented SQL generation for predicate : (items IN {<Item: 0x89b9c50> (entity: Item; id: 0x89be960 <x-coredata://A5DE0832-95F1-460C-9F40-202A10E16BDC/Item/p17> ; data: { 
    attributes =  (
    ); 
    categories =  (
     "0x89be540 <x-coredata://A5DE0832-95F1-460C-9F40-202A10E16BDC/Category/p28>", 
     "0x89be680 <x-coredata://A5DE0832-95F1-460C-9F40-202A10E16BDC/Category/p29>" 
    ); 
    name = "Some Item"; 
})})' 

を私はここで間違って何をしているのですか?

答えて

3

は、私はよく分からないが、それはうまくいくかもしれない、これを試してみてください:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY items IN %@", [category.items allObjects]]; 
+0

それは働きました。ありがとう。私は 'ANY'が必要であることを知らなかった、 –

+1

これは多対多関係だからだ。 –

+0

上記の述語をNotでどのように使うことができますか? – wod