素晴らしい上記の投稿のおかげで、私はそれをソートすることができました。非常に不器用かもしれませんが、動作します。
まず、fetchedObjects を SelectorView Controller の PickerView にロードしたときに、次のコードで属性「isSelectedPractice」を「NO」に設定しました。
for (Practice *fetchedPractice in [self.fetchedResultsController fetchedObjects]) {
[fetchedPractice setValue:@"NO" forKey:@"isSelectedPractice"];
[self.managedObjectContext save:nil];
次に、選択したプラクティスについて次のことを特定しました。
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
Practice *practice = [[self.fetchedResultsController fetchedObjects] objectAtIndex:row];
self.selectedPractice = practice;
NSLog(@"The '%@' practice was selected using the picker", self.selectedPractice.name);
}
ビューが RegularViewController に戻ったので、selectedPractice の isSelectedPractice 属性を YES に設定しました。PickerView で複数の選択が isSelectedPractice YES の複数のオブジェクトになることを望んでいなかったので、私はこれを遅くしました。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"SavedPractice Segue"])
{
[self.selectedPractice setValue:@"YES" forKey:@"isSelectedPractice"];
[self.managedObjectContext save:nil];
NSLog(@"Setting SelectedPractice as '%@' in RegularViewController with isSelectedPractice as '%@'",self.selectedPractice.name,self.selectedPractice.isSelectedPractice );
RegularViewController *rvc= segue.destinationViewController;
rvc.delegate = self;
rvc.selectedPractice = self.selectedPractice;
}
else {
NSLog(@"Unidentified Segue Attempted!");
}
}
次に、RegularViewController の setupFetchedResultsController メソッドで次の Predicate を設定します。
request.predicate = [NSPredicate predicateWithFormat:@"isSelectedPractice = %@", @"YES"];
助けてくれてありがとう