Заполните UITableView, используя NSMutableDictionary, keysSortedByValueUsingSelector - PullRequest
0 голосов
/ 13 июля 2011

Мой класс модели имеет NSMutableDictionary с моими данными.В моем классе представления я хочу отобразить эти данные в моем методе UITableView cellforRowAtIndexPath.Мой класс просмотра имеет NSArray для отображения данных.

Я могу сделать это, чтобы мои данные в моем NSArray отображались правильно:

self.CategoriesArray = [model.CategoryDictionary allKeys];

Однако, поскольку NSMutableDictionary не сортируется сам по себе, мои элементы в моем TableView не в алфавитном порядкепорядок.Я думал, что смогу сделать это:

Однако я получаю следующую ошибку:

2Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFBoolean localizedCaseInsensitiveCompare:]: unrecognized selector sent to instance 0x13d0a20'

Я предполагаю, что это потому, что мой класс представления не знает, что делать с методом localizedCaseInsensitiveCompare,

Как мне решить эту проблему?Спасибо.

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Я думаю, вы говорили, что это дает вам правильные результаты, но не в порядке, верно?

self.CategoriesArray = [model.CategoryDictionary allKeys];

Если это так, то это даст вам правильный порядок, если я правильно понимаю ваш вопрос:

NSArray* keys = [model.CategoryDictionary allKeys];

self.CategoriesArray = [keys sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
0 голосов
/ 13 июля 2011

localizedCaseInsensitiveCompare: предназначен только для сравнения NSString, но не NSDictionary или NSArray.

Для сортировки ваших категорий Array посмотрите на

sortedArrayUsingComparator: и sortedArrayUsingDescriptors: для NSArray

sortUsingDescriptors и sortUsingComparator для NSMutableArray

Чтобы перебрать массив, вы можете сделать что-то вроде

for (NSString *string in categoriesArray)
{

}
...