から文字列要素が含まれているコアデータからオブジェクトを取得するために 私の実体を述語を形成するために、どのように「フォーム」は、次のようになります。、私はコアデータからオブジェクトを取得するための述語を作成する必要がアレイ
@interface EEForm (CoreDataProperties)
@property (nullable, nonatomic, retain) NSDate *date;
@property (nullable, nonatomic, retain) NSString *descriptor;
@property (nullable, nonatomic, retain) NSString *location;
@property (nullable, nonatomic, retain) NSMutableSet<Participants *> *participants;
エンティティ「参加者」は、そのように見える:
@interface Participants (CoreDataProperties)
@property (nonatomic, assign) NSInteger indexRow;
@property (nullable, nonatomic, retain) NSString *participant;
@property (nullable, nonatomic, retain) EEForm *form;
を私は(この配列は、文字列オブジェクトで構成され、それがどのようなユーザーが選択の依存に変更指定された配列からすべてのオブジェクトが含まれていること、参加者フィールドのベース上のオブジェクトを取得したいです)。 フェッチ要求はFetchResultControllerによって実行されます。私はそれを初期化して述語を設定しました。
私はこのようにしましたが、指定された配列から少なくとも1つのオブジェクトを含むすべてのオブジェクトを含みます。
- (NSFetchedResultsController *)fetchResultController {
if(_fetchResultController != nil) {
return _fetchResultController;
}
NSPredicate *lPredicate = [NSPredicate predicateWithFormat:@"ANY participants.participant IN %@", _selectedForPredicatel];
NSFetchRequest *lRequest = [[NSFetchRequest alloc]init];
[lRequest setPredicate:lPredicate];
NSEntityDescription *lEntity = [NSEntityDescription entityForName:@"Form" inManagedObjectContext:self.managedObjectContext];
[lRequest setEntity:lEntity];
[lRequest setFetchBatchSize:10];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]initWithKey:@"date" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc]initWithObjects:sortDescriptor, nil];
[lRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *fetchResultController = [[NSFetchedResultsController alloc]initWithFetchRequest:lRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
fetchResultController.delegate = self;
self.fetchResultController = fetchResultController;
NSError *error = nil;
if(![[self fetchResultController] performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return fetchResultController;
}
述語を適切に設定して、指定された配列のすべての要素を含むオブジェクトをフィルタする方法を教えてください。
はEDIT: 配列述語のために使用されるようになっています
_selectedForPredicatel = [[NSMutableArray alloc]initWithObjects:@"Child",@"Adult", @"Group of people", @"Family", @"Teenager", nil];
たびにユーザーがどのフィルタ「フォーム」オブジェクトによって、この配列が更新されたパラメータを選択し、私は行われるフェッチ要求を必要としますそれによると。したがって、「Form」に参加者が含まれている場合は、@「Child」、@「Adult」が配列_selectedForPredicatelにあります。@ "Adult"、@ "Group of people"フェッチされる。 _selectedForPredicatel配列の両方の要素を含む 'Form'のみを取得する必要があります。 アドバイスをいただき、ありがとうございます。代わりに、ANYの
'participant'属性に同じ値を持つ複数の' Participant'がありますか? – pbasdf
@pbasdf同じ値を持つ多くの参加者がいる可能性があります。 – Melany