私は次のことを行うことでそれを解決しました(それが他の誰かを助けることを願っています):
UICollectionViewをCoreDataからNSArrayに入力します。
self.allCVData = [context executeFetchRequest:fetchRequest error:&error];
次に、NSArrayをNSMutableArrayに追加して、UICollectionでのフィルタリングに使用できるようにします。
self.filteredCVData = [[NSMutableArray alloc] initWithArray:allCVData];
UITextFieldを追加し、searchFieldと呼びました。
viewDidLoadにセレクターを追加しました:
[mytextfield addTarget:self action:@selector(textDidChange:) forControlEvents:UIControlEventEditingChanged];
UITextFieldの変更を受け入れるメソッドを追加しました。
-(void) textDidChange:(id)sender
{
UITextField* searchField = (UITextField *) sender;
if(searchField.text.length == 0)
{
self.isFiltered = FALSE;
[self.filteredCVData removeAllObjects];
[self.filteredCVData addObjectsFromArray:self.allCVData];
}
else
{
self.isFiltered = true;
[self.filteredCVData removeAllObjects];
self.filteredCVData = [[NSMutableArray alloc] init];
LogInfo(@"Before Looping in allCVData Array.");
for (OLPerson* person in allCVData)
{
NSRange firstnameRange = [person.firstname rangeOfString:searchField.text options:NSCaseInsensitiveSearch];
NSRange surnameRange = [person.surname rangeOfString:searchField.text options:NSCaseInsensitiveSearch];
if(firstnameRange.location != NSNotFound || surnameRange.location != NSNotFound)
{
[self.filteredCVData addObject:person];
}
}
}
[self.collectionView reloadData];
}