Я пытаюсь создать разделы в табличном представлении на основе алфавита и отсортировать записи в алфавитном порядке по этим разделам.
Я собрал первую букву в каждой записи barsArray в barsArrayIndex, и ятеперь пытаюсь использовать NSPredicate для подсчета количества каждой буквы.
Я делаю это, следуя этому руководству .
Они используют NSArray и яЯ использую NSDictionary и не могу заставить его работать.Кто-нибудь может мне помочь?
Приложение вылетает при попытке показать представление с представлением таблицы в нем.В консоли отладчика отображается следующая ошибка:
* Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «Невозможно выполнить операцию подстроки с чем-то, что не является»Строка
Это мой код
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSString *alphabet = [bandsArrayIndex objectAtIndex:section];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@", alphabet];
NSArray *letters = [bandsArray filteredArrayUsingPredicate:predicate];
return [letters count];
}
РЕДАКТИРОВАТЬ: Это мой barsArray.
Заголовок
NSMutableArray *bandsArray;
@property (nonatomic, retain) NSMutableArray* bandsArray;
Theреализация
// set array from plist
NSString *path = [[NSBundle mainBundle] pathForResource:@"Bands" ofType:@"plist"];
NSMutableArray* tmpArray = [[NSMutableArray alloc] initWithContentsOfFile:path];
self.bandsArray = tmpArray;
// sort array after name ascending
NSSortDescriptor *nameSorter = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];
[bandsArray sortUsingDescriptors:[NSArray arrayWithObject:nameSorter]];