初始化NSMutableDictionary以创建过滤器

时间:2011-07-13 19:50:22

标签: iphone nsmutablearray

这是我昨天发表的一个问题:Initializing NSMutableDictionary

(这可能是一个愚蠢的问题,但我看不出我做错了什么。)

我喜欢在我的TableView中列出“全部”的想法,当按下过滤器按钮时会弹出,以指示没有应用过滤器。我将我的模型类中的数据正确地排序到NSMutableArray中,如下所示:

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

但我想在CategoriesArray中添加“All”选项以显示在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 个答案:

答案 0 :(得分:2)

sortedArrayUsingSelector:返回一个不可变数组,这就是你无法添加它的原因。这样做是为了获得可变副本。

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

答案 1 :(得分:0)

似乎CategoriesArray实际上是NSArray个实例。来自Apple's doc

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