我的模型类有一个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方法。
我该如何解决这个问题?感谢。
答案 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:
sortUsingDescriptors
和sortUsingComparator
要循环播放数组,您可以执行类似
的操作for (NSString *string in categoriesArray)
{
}