Я пытаюсь написать простой механизм фильтра, который, когда пользователь вводит в строку фильтра, UIPicker фильтрует его данные. Я работаю почти.iPhone SDK: Как восстановить набор данных NSMutableArray после применения фильтра?
Это мой код фильтра, и он работает. Мой вопрос заключается в том, как только я применил фильтр к источнику данных, как я могу удалить предикат и восстановить исходный набор данных? Я использую 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];
}