3

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

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

为了澄清,我想按子数组索引 3 处的 NSString 按字母顺序对第一个数组进行排序。

4

4 回答 4

3

如果您NSMutableArray只包含 type 的对象NSString,只需执行以下操作:

[myMutableArray sortUsingSelector:@selector(compare:)];
于 2010-10-26T19:20:44.757 回答
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


现在通过在数组NSMutableArray上调用 sortUsingSelector: 来使用排序:

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

NSArray:

[myArray sortedArrayUsingSelector:@selector(stringCompare:)];
于 2011-02-01T22:59:54.817 回答
2

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

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

于 2009-07-09T11:55:53.923 回答
0

您可以通过以下方式按键排序:

NSSortDescriptor *aSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"key" ascending:NO];
[yourArray sortUsingDescriptors:[NSArray arrayWithObject:aSortDescriptor]];
于 2013-01-07T07:08:54.103 回答