2011-07-13 24 views
1

这是一个延续的问题,我昨天从一个帖子有:Initializing NSMutableDictionary初始化的NSMutableDictionary创建一个过滤器

(这可能是一个愚蠢的问题,但我不明白我在做什么错。)

我喜欢在按下过滤器按钮时弹出一个TableView中列出的“All”的想法,以表示没有应用过滤器。我从正确排序到一个NSMutableArray像这样我的模型类让我的数据:

NSArray *anArray = [dmgr.CategoryDictionary allKeys]; 
    self.CategoriesArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 
    [self.CategoriesArray insertObject:@"All" atIndex:0]; // line causes crash 

但我想补充的“全部”选项来CategoriesArray在UITableView中显示。当我尝试运行它时,它在该线路上崩溃,因为

NSArrayI insertObject:atIndex:]: unrecognized selector sent to instance 0x59baba0 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI insertObject:atIndex:]: unrecognized selector sent to instance 0x59baba0' 

任何帮助,将不胜感激。谢谢!

回答

2

sortedArrayUsingSelector:返回一个不可变的数组这就是为什么你不能给它添加。这样做是为了得到一个可变的副本。

self.CategoriesArray = [NSMutableArray arrayWithArray:[anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]]; 
0

看来CategoriesArray实际上是一个NSArray实例。从Apple's doc

-(NSArray *)sortedArrayUsingSelector:(SEL)comparator;