2011-07-12 177 views
0

我的模型类有一个NSMutableDictionary和我的数据。在我的视图类中,我想在我的UITableView cellforRowAtIndexPath方法中显示该数据。我的视图类有一个NSArray用于显示数据。使用NSMutableDictionary填充UITableView,keysSortedByValueUsingSelector

我能做到这一点,让我的数据到我的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方法做。

我该如何解决这个问题?谢谢。

回答

1

我你以为你在说这给你了e正确的结果,只是不正确,对吗?

self.CategoriesArray = [model.CategoryDictionary allKeys]; 

如果是这样的话,那么这会给你正确的顺序,如果我正确理解你的问题:

NSArray* keys = [model.CategoryDictionary allKeys]; 

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

localizedCaseInsensitiveCompare:只是比较NSString,而不是NSDictionary或NSArray。

要通过数组排序的categoriesArray看看

sortedArrayUsingComparator:sortedArrayUsingDescriptors:为NSArray的

sortUsingDescriptorssortUsingComparator为NSMutableArray的

要循环,你可以这样做

for (NSString *string in categoriesArray) 
{ 

} 
+0

在我的数组中的元素是NSString的虽然。我可以不使用localizedCaseInsensitiveCompare方法吗? – Crystal

+0

您需要遍历数组。你不能调用一个为数组上的字符串设置的方法。我会更详细地编辑我的答案。 –