有没有一种简单的方法可以对包含 NSStrings 的 NSMutableArrays 的 NSMutableArray 进行排序?
我确信必须有一个简单的方法来做到这一点,但我似乎找不到它。
为了澄清,我想按子数组索引 3 处的 NSString 按字母顺序对第一个数组进行排序。
有没有一种简单的方法可以对包含 NSStrings 的 NSMutableArrays 的 NSMutableArray 进行排序?
我确信必须有一个简单的方法来做到这一点,但我似乎找不到它。
为了澄清,我想按子数组索引 3 处的 NSString 按字母顺序对第一个数组进行排序。
如果您NSMutableArray
只包含 type 的对象NSString
,只需执行以下操作:
[myMutableArray sortUsingSelector:@selector(compare:)];
除了“使用这个功能,弄清楚”之外,没有看到任何人真正回答这个问题。所以这里有一些你可以使用的实际代码。
将此类别放在 .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
现在通过在数组NSMutableArray上调用 sortUsingSelector: 来使用排序:
[myArray sortUsingSelector:@selector(stringCompare:)];
NSArray:
[myArray sortedArrayUsingSelector:@selector(stringCompare:)];
正如其他人所提到的, NSArray 没有compare:
允许它自行排序的选择器,因此您必须自己定义它。我会在 NSArray 上创建一个类别,使用一个名为compare:(NSArray *)otherArray
(或更好地描述它的功能)的方法,并将其与sortUsingSelector:
.
根据您的需要,您可以在需要对它们进行排序时将所有字符串填充到一个大数组中,然后改用它。编写的代码可能会少一些。
您可以通过以下方式按键排序:
NSSortDescriptor *aSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"key" ascending:NO];
[yourArray sortUsingDescriptors:[NSArray arrayWithObject:aSortDescriptor]];