エンティティ「Meetings」<--->>「Users」の対多関係
「Meetings」の NSManagedSubclass を作成しましたが、次のプロパティがあります。
@property (nonatomic, retain) NSSet *users;
*users のオブジェクトは正常に保存され、表示されます。しかし、取得しようとしても何も起こりません。ブロック内にブレークポイントを設定しましたが、フェッチ ブロックがブレークポイントに到達しないようです。エラーなし。アプリケーションはまだ実行中です。
次のコードがあります。
NSString *userName = @"iphone";
NSLog(@"Username %@", userName);
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Meeting"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"users.username == %@", userName];
NSLog(@"Predicate %@", predicate);
[request setPredicate:predicate];
[self.managedObjectContext executeFetchRequest:request onSuccess:^(NSArray *results)
{ // I have setup the breakpoint here
NSLog(@"results.count %i", results.count);
if(results.count > 0)
{
NSLog(@"object found");
}
}onFailure:^(NSError *error) {
NSLog(@"There was an error! %@", error);
}];
ログ:
2013-10-12 20:10:19.200 App[3128:c07] Username iphone
2013-10-12 20:10:19.200 App[3128:c07] Predicate users.username == "iphone"
Meetings の他の属性を正常に取得できます。つまり、述語行を次のように置き換えると:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"meetings_id == %@", meetings_id];
ブレークポイントはコードを停止し、「オブジェクトが見つかりました」と表示されます。
ここでも、users リレーションシップ内に「iphone」ユーザーが表示されます。私は何を間違っていますか?