使用caseInsensitiveCompare对NSStrings进行排序?

时间:2011-08-07 19:42:13

标签: objective-c arrays sorting nsstring nsdictionary

我想要达到的目标是: 1.从我的NSArray中获取NSStrings的NSStrings(每个NSDictionary只有一个NSString) 2.然后对所有NSStrings进行排序,以便按字母顺序对所有名称进行排序。

例如: 说有马克,尼克和罗布。我的阵列中有6个NSDictionaries(每个玩家有2个nsdictionaries)。所以看起来像这样(随机): Mark,Rob,Nick,Nick,Rob,Mark

我想这样排序: Mark,Mark,Nick,Nick,Rob,Rob

这可能吗?我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:2)

您首先需要的是一系列名称。我们假设“dictionaryArray”是您的词典数组的名称,“name”是每个词典中的键之一:

NSArray *names = [dictionaryArray valueForKey:@"name"];

接下来,您对此数组进行排序。在这个特定的例子中,您实际上是在生成一个已排序的不可变副本:

NSArray *sortedNames = [names sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

如果您想要一个可变数组进行排序,在创建数组“names”之后,您可以创建它的可变版本:

NSMutableArray *mutableNames = [NSMutableArray arrayWithArray:names];

然后你可以用以下方式对其进行排序:

[mutableNames sortUsingSelector:@selector(caseInsensitiveCompare:)];

祝你工作顺利。