排序的NSMutableArray和Remove Object

时间:2013-11-06 07:51:58

标签: ios objective-c nsmutablearray

我有一个填充了自定义对象的NSMutableArray,我必须排序。 我已经读过可以使用以下代码对NSMutableArray进行排序。

NSSortDescriptor * sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey: @ "name" ascending: YES];
NSArray * sortDescriptors = [NSArray arrayWithObject: sortDescriptor];
[array sortUsingDescriptors: sortDescriptors];

然而,这样做,我有一个问题,因为我必须删除dell'NSMutableArray中的元素,如果我尝试使用方法[removeObject],我会收到错误,因为我无法从NSArray中删除对象 有没有办法解决这个问题? 谢谢, 蒙特拉

2 个答案:

答案 0 :(得分:2)

您可以在mutableCopy对象上调用NSArray,向您返回NSMutableArray,如下所示:

NSMutableArray *mutableArray = [array mutableCopy];

答案 1 :(得分:1)

你在这里遇到了问题...... NSMutableArray的sortUsingDescriptors:对数组本身进行排序。它不返回NSArray - 它将实例“就地”排序:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html#//apple_ref/occ/instm/NSMutableArray/sortUsingDescriptors

所以你的代码是:

NSMutableArray * myArray = ...
[myArray sortUsingDescriptors:@[[[NSSortDescriptor alloc] initWithKey: @ "name" ascending: YES]]];
[myArray removeObjectAtIndex:...]; // or any other method you like