2011-12-22 87 views
5

可能重复:
What is the most efficient way to sort an NSSet?objective-c排序NSStrings的NSMutableSet?

我现在有一个的NSMutableSet具有下列字符串列表。例如: {@ “C”,@ “d”,@ “E”,@ “F”,@ “G”,@ “一”}

有人可以告诉我怎么可以排序这些按字母顺序排列?有没有办法使用sortedArrayUsingDescriptors:来做到这一点?

+1

http://stackoverflow.com/questions/1351182/how-to-sort-a-nsarray-alphabetically – 2011-12-22 19:38:03

+1

上述帖子的选择器在NSSet上可用。请注意,它将不再是一个集合。数组是有序的,集合不是。 – 2011-12-22 19:40:39

+0

我会说这是**而不是**这个问题的重复。具体来说,另一个更一般的问题对于如何在这个特定的边界情况下创建描述符没有帮助,它不像看起来那么明显,因为你首先想到的是“但我不想基于在对象上的键上;我想根据对象本身进行排序“。当然,答案是“自我”键给你,但对于不知道键值编码的人来说,它并不是特别明显。 :-) – dgatwood 2014-09-12 08:06:24

回答

15

当然,你可以使用该方法:

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES]; 
NSArray *sortedArray = [mySet sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]]; 

这只是创建了一个新的排序描述符指定键“说明”(的NSString提供-description方法返回字符串)。然后它将包含该排序描述符的数组作为参数传递给-sortedArrayUsingDescriptors:,您可以将该数组发送到任何NSSet。

+0

如果你通过“自我”作为关键,你会得到相同的结果。我想通过请求描述键,你实际上正在做额外的工作。具体来说,我认为它通过调用所请求的键的描述方法来获得用于排序的值,因此您实际上正在描述描述)。 – dgatwood 2014-09-12 08:00:58

+0

@dgatwood你打败了我。我只写了一些代码来对NSString数组进行排序,并决定将@作为key的“self”。来到这里检查是否有替代方案。 – pnizzle 2015-01-22 03:44:51

+0

@dgatwood你没有错,但使用*描述*即使数组包含的对象不是字符串,它也可以工作得更健壮一些。由于OP确实指出对象是字符串,但是同时额外工作的数量可以忽略不计,这是否真的是值得的。 – Caleb 2015-01-22 05:36:17

-2

NSSets是无序集合。如果你想要一个有序的容器,使用NSArray。

1

我打算假设这个问题Sorting NSSet是你的问题的答案。对于点击的硬...

[mySet sortedArrayUsingDescriptors:descriptors];