如何对包含NSStrings的NSMutableArrays的NSMutableArray进行排序?

时间:2009-07-09 11:38:23

标签: objective-c arrays sorting nsmutablearray

是否有一种简单的方法可以对包含NSStrings的NSMutableArray的NSMutableArray进行排序?

我确信必须有一个简单的方法来做到这一点,但我似乎无法找到它。

澄清我希望通过子阵列索引3处的NSString按字母顺序对第一个数组进行排序。

3 个答案:

答案 0 :(得分:3)

如果您的NSMutableArray仅包含NSString类型的对象,请执行以下操作:

[myMutableArray sortUsingSelector:@selector(compare:)];

答案 1 :(得分:3)

除了“使用此功能,弄明白”以外,没有看到任何人真正回答这个问题。所以这里有一些你可以使用的实际代码。

将此类别放在.h文件的末尾(或任何地方,然后将.h导入到需要排序的地方)

@interface NSString (SortCompare)

-(NSInteger)stringCompare:(NSString *)str2;

@end

将它放在.m文件中(或者你导入的.h文件的.m)

@implementation NSString (SortCompare)

-(NSInteger) stringCompare:(NSString *)str2
{
    return [(NSString *)self localizedCaseInsensitiveCompare:str2];
}

@end

现在通过在数组上调用sortUsingSelector:来使用sort 的NSMutableArray:

[myArray sortUsingSelector:@selector(stringCompare:)];

的NSArray:

[myArray sortedArrayUsingSelector:@selector(stringCompare:)];

答案 2 :(得分:2)

正如其他人所提到的,NSArray没有允许它自行排序的compare:选择器,所以你必须自己定义它。我会在NSArray上使用一个名为compare:(NSArray *)otherArray的方法创建一个类别(或者更好地描述它的作用),并将其与sortUsingSelector:一起使用。

根据您的需要,当您需要对它们进行排序时,可能会将所有字符串填充到一个大数组中,然后使用它。编写代码可能要少一些。