按字母顺序排列NSMutableArray的正确方法是什么?

时间:2012-06-13 22:36:11

标签: objective-c nsmutablearray

我从Stack Overflow的答案中找到了这些代码片段,并没有优雅地解决我的问题。

来自"Sorting array in alphabetic order…"的第一段代码没有发出任何警告,但随后发生了崩溃。

NSSortDescriptor *nameSort = [NSSortDescriptor sortDescriptorWithKey:@"Name" ascending:YES];
[myArray sortUsingDescriptors:[NSArray arrayWithObject:nameSort]];

虽然第二段代码在我的代码中每次使用都会生成一个警告,但会产生我想要的结果:

myMutableArray = [myMutableArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

所以,我的问题是为什么第二种方法使用警告“Incompatible pointer types assigning to 'NSMutableArray*' from incompatible type 'NSArray*'”?

1 个答案:

答案 0 :(得分:2)

如果你正在尝试对NSMutableArray进行就地排序,你应该使用sortUsingSelector:而不是重新分配sortedArrayUsingSelector:的结果(它被宣布为普通的NSArray,而不是的NSMutableArray)。