0

まず、くだらない質問で申し訳ありません。残念ながら、非常に多くの投稿を読んだ後、実装方法がわかりませんでした。そのために残念。では、ここに私の質問があります。私には、地域と国という 2 つのエンティティがあります。各地域は国に属し、すべての国にはいくつかの地域があります。私のアプリケーションでは、国を選択し、そのすべての地域を表示したいと考えています。シンプルにするために、国と地域の両方に属性名があり、地域には「国」という関係があります。ここで、国のすべての地域を選択する必要があります。

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *desc = [[model entitiesByName] objectForKey:@"Region"];
[request setEntity:desc];

NSSortDescriptor *sd = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObject:sd]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"any country LIKE[c] 'aCountry'"];
[request setPredicate:predicate];

国は関係であり、このため国の名前は関係ではなく、エンティティの国に保存されるため、これは見栄えがしますが、機能しません。次に、別の方法を試しました:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"any Country.name LIKE[c] 'aCountry'"];

これにより、エラーが発生します。

NSInvalidArgumentException'、理由: 'keypath Country.name がエンティティに見つかりません'

さて、私の地域を取得する最良の方法は何ですか?

4

1 に答える 1

1

aCountryCountryエンティティのオブジェクトであり、 countryがRegionからCountryへの 1 対 1 の関係である場合、次のフェッチ リクエストはその国のすべての地域を検索します。

Country aCountry = ... ;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Region"];
// ... add sort descriptor (optional)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"country = %@", aCountry];
[request setPredicate:predicate];

ただし、 CountryからRegionへの逆対多関係も定義している場合は、その国のすべての地域を取得するだけであることに注意してください。

NSSet *regionsForCountry = aCountry.regions;

または、配列を使用する場合:

NSArray *regionsForCountry = [aCountry.regions allObjects];
于 2012-12-14T17:31:13.490 に答える