使用NSMutableDictionary,keysSortedByValueUsingSelector填充UITableView

时间:2011-07-12 22:41:55

标签: iphone nsdictionary nsmutabledictionary

我的模型类有一个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 个答案:

答案 0 :(得分:1)

我认为你说这会给你正确的结果,只是不按顺序,对吧?

self.CategoriesArray = [model.CategoryDictionary allKeys];

如果是这种情况,那么如果我正确理解你的问题,这将给你正确的顺序:

NSArray* keys = [model.CategoryDictionary allKeys];

self.CategoriesArray = [keys sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

答案 1 :(得分:0)

localizedCaseInsensitiveCompare:仅用于比较NSString,而不是NSDictionary或NSArray。

要对您的categoriesArray进行排序,请查看

NSArray的

sortedArrayUsingComparator:sortedArrayUsingDescriptors:

NSMutableArray的

sortUsingDescriptorssortUsingComparator

要循环播放数组,您可以执行类似

的操作
for (NSString *string in categoriesArray)
{

}