SDK для iPhone: NSInvalidArgumentException - PullRequest
0 голосов
/ 05 февраля 2010

Я пытаюсь разработать простой механизм поиска на UIPicker. Подход, который я использую, состоит в том, чтобы сохранить два массива. Моя проблема в том, что по какой-то причине я получаю эту ошибку во время выполнения.

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIView numberOfComponentsInPickerView:]

Вот объявления массива.

//data source for UIPicker NSArray
*arrayCountryChoices;

//search results buffer 
NSMutableArray *arraySearchResults; 

//properties
@property(nonatomic,retain) NSArray*arrayCountryChoices; 
@property(nonatomic,retain) NSMutableArray *arraySearchResults;

Здесь я инициализирую данные

//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];
}

Вот код поиска для полноты, хотя он пока не актуален, так как приложение умирает еще до того, как мы сюда попали

//filter on search term
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@", strSearchText];
[arraySearchResults filterUsingPredicate: predicate];
[pickerCountry reloadComponent:0];

Я также перетащил источник данных и делегировал соединения из UIPicker владельцу файлов в Интерфейсном Разработчике. Есть идеи? Заранее спасибо.

1 Ответ

1 голос
/ 05 февраля 2010

Похоже, что у вас есть источник данных средства выбора, отличный от объекта, который реализует код, который вы разместили там - очевидно, где-то UIView. Убедитесь, что выходы сборщика указывают на фактический объект источника данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...