私はstackoverflowで多くのソリューションを試しましたが、有効なものを見つけることができません。私は、クライアントと宛先の2つのエンティティを持つコアデータモデルを持っています。どちらもNSManagedObject
サブクラスで囲まれています。NSPredicateで1対多の関係でフィルタリングする
クライアントには、いくつかのプロパティと、destinationsという1対多の関係があります。 宛先には、NSNumber
でラップされたdefault_destというプロパティと、clientという逆の関係があります。
UITableViewController
私は次のfetchedController
プロパティを使用しています。リクエストはうまくいきます。私はSQLiteに格納されたクライアントを取得することができます。
if (fetchedResultsController)
return fetchedResultsController;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Client" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"code" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
fetchedResultsController.delegate = self;
[fetchRequest release];
[sortDescriptor release];
[sortDescriptors release];
return fetchedResultsController;
私は別のステップを踏みます。私は今、各クライアントの前のリクエスト(宛先に含まれる宛先NSSet
)から検索された宛先をフィルタリングします。
NSPredicate* predicate = [NSpredicate predicateWithFormat:@"ANY destinations.default_dest == %@", [NSNumber numberWithInt:1]];
そしてIとしてfetchRequestで設定:
そのdefault_dest値がこの仕様を修正する1である場合にのみ、特に、宛先は、私は次のようNSPredicate
を追加しようとした添加することができます
[fetchRequest setPredicate:predicate];
リクエストを実行するたびに、「多対多の関係の障害の宛先」が返されます。どういう意味ですか?
私はiphone-core-data-relationship-faultを読みましたが、何を意味するのか分かりません。
私の質問は次のとおりです。同様の目標に達することは可能ですか?はいの場合は、何か提案がありますか?
ノート
もちろん、私は設定の目的地を反復処理することができますが、高価な反復とどのように多くのレコードが存在することができれば、私は知りません。