web-dev-qa-db-ja.com

プロパティIN配列でコアデータの結果をフィルタリングする

現在、CoreDataがEventというタイトルの特定のエンティティのすべての結果を正常に返しています。

NSManagedObjectContext *context = [delegate managedObjectContext];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Event" 
                                                     inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];

NSError *error;
NSArray *fetchResults = [context executeFetchRequest:request error:&error];

Eventエンティティの1つのプロパティは、tidというタイトルの文字列です。許可されているすべてのtid値を含む配列filterArrayもあります。

filterArrayの値の1つと一致するtidプロパティを持つイベントのみを返すようにCore Dataリクエストを取得するにはどうすればよいですか?答えはNSPredicateに関連していると思いますが、私はそれを自分の意志に曲げるにはまだ十分に精通していません。

24
markdorison

これを試して:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tid IN %@", filterArray];

[request setPredicate:predicate];

述語プログラミングガイド集計操作 をご覧ください。

[〜#〜]編集[〜#〜]

NSPredicate iPhone 3.2 SDKコアデータの「IN句」NSInvalidArgumentException例外 をご覧ください。それはあなたが持っているのと同じエラーです。問題は、列/属性名のタイプミスでした。構文は問題ないはずです。tidだけを見つけることはできません。

61
Nick Weaver