User エンティティと Email エンティティがあります。ユーザーは多数の電子メールを持っています。User オブジェクトがあれば、[user email] を使用して一連のメールにアクセスできます。しかし、NSPredicate を使用してユーザーのすべてのメールを取得するにはどうすればよいでしょうか? 逆の関係はないと仮定します。
質問する
519 次
3 に答える
1
逆の関係があるはずです。そうでない場合、プログラムは警告を出します。次のようなことができます:
NSPredicate *predicate=[NSComparisonPredicate predicateWithLeftExpression:[NSExpression expressionForKeyPath:@"user" rightExpression:[NSExpression expressionForConstantValue:yourUser] modifier:NSDirectPredicateModifier type:NSEqualsToPredicateOperatorType options:0];
すでにユーザーを持っている場合は、ユーザー オブジェクトからメールを取得できることに注意してください。このユーザー オブジェクトでは、1 対多の関係が NSSet として表されます。これを使用して、そこからすべてのメールにアクセスしたり、セットを配列に並べ替えたりできます。何らかの NSFetchResultsController を使用する必要がある場合は、フェッチを使用してください。
于 2012-09-28T19:13:10.960 に答える
0
述語は必要ありません。気になるすべてのユーザーを取り上げて、次のことを行うことができます。
[users valueForKey:@"emails"]
そして、すべての電子メールの山を取得します。
于 2012-09-28T22:28:40.267 に答える
0
逆の関係を復元します。Core Data は、直接使用しなくても、ハウスキーピングのために逆の関係を必要とします。
電子メール エンティティに対する単純な要求は次のようになります。
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Email"];
[NSPredicate predicateWithFormat:@"user = %@", user];
NSArray *results = [managedObjectContext executeFetchRequest:request error:&error];
于 2012-09-28T19:22:00.830 に答える