Я пытаюсь написать простой механизм фильтрации, чтобы при вводе пользователем строки фильтра UIPicker фильтровал свои данные.У меня это работает почти.
Это мой код фильтра, и он работает.У меня вопрос, как только я применил фильтр к источнику данных, как я могу удалить предикат и восстановить исходный набор данных?Я использую NSMutableArray для моего источника данных.
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] 'B'"];
[arrayCountryChoices filterUsingPredicate: predicate];
[pickerCountry reloadComponent:0];
Редактировать
При таком предложенном подходе я получаю эту ошибку.* Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «* - [UIView numberOfComponentsInPickerView:]:
Я не уверен, почему.Это весь связанный код, который я могу придумать.Я также проверил мои соединения в IB.Почему?
//create data
arrayCountryChoices = [NSArray arrayWithObjects:@"foo",@"bar",@"baz",nil];
//copy the original array to searchable array
arraySearchResults = [arrayCountryChoices mutableCopy];
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
return [arraySearchResults count];
}
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [arraySearchResults objectAtIndex:row];
}
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
//grab the selected country
strUserChoice = [arraySearchResults objectAtIndex:row];
}