是否有一种简单的方法可以对包含NSStrings的NSMutableArray的NSMutableArray进行排序?
我确信必须有一个简单的方法来做到这一点,但我似乎无法找到它。
澄清我希望通过子阵列索引3处的NSString按字母顺序对第一个数组进行排序。
答案 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:
一起使用。
根据您的需要,当您需要对它们进行排序时,可能会将所有字符串填充到一个大数组中,然后使用它。编写代码可能要少一些。