Iphone objective-c排序NSString的NSMutableSet?

Iphone objective-c排序NSString的NSMutableSet?,iphone,objective-c,nsmutableset,Iphone,Objective C,Nsmutableset,可能重复: 我目前有一个NSMutableSet,其中包含以下字符串列表。例如。: {“c”、“d”、“e”、“f”、“g”、“a”} 有人能告诉我如何按字母顺序排列这些值吗?是否有一种方法可以通过使用描述符进行排序:?NSSET是无序集合。如果您想要一个已排序的容器,请使用NSArray。我假设这个问题就是您的问题的答案。对于艰难的点击 [mySet sortedArrayUsingDescriptors:descriptors]; 当然,您可以使用该方法: NSSortDescripto

可能重复:

我目前有一个NSMutableSet,其中包含以下字符串列表。例如。: {“c”、“d”、“e”、“f”、“g”、“a”}


有人能告诉我如何按字母顺序排列这些值吗?是否有一种方法可以通过使用描述符进行排序:?

NSSET是无序集合。如果您想要一个已排序的容器,请使用NSArray。

我假设这个问题就是您的问题的答案。对于艰难的点击

[mySet sortedArrayUsingDescriptors:descriptors];

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

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

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

NSSet上提供了上述帖子中的选择器。请注意,它将不再是一个集合。数组是有序的,集合不是。我想说这不是那个问题的重复。具体地说,另一个更一般的问题对于如何在这个特定的边缘情况下创建描述符没有任何帮助,而且它不像看上去那么明显,因为您首先想到的是,“但我不想基于对象上的键进行排序;我想基于对象本身进行排序”。当然,答案是“self”键给了你这个答案,但是对于那些不知道前后编码键值的人来说,这并不特别明显。:-)如果将“self”作为键传递,则会得到相同的结果。我认为通过请求描述码,你实际上做了额外的工作。具体地说,我认为它通过对请求的键的值调用description方法来获得用于排序的值,因此您实际上是在获取描述的描述。)@dgatwood您比我先获得了它。我刚刚编写了一些代码对NSString数组进行排序,并决定将@“self”作为键。来这里是为了检查是否有替代方法。@dgatwood您没有错,但是使用description更可靠一些,因为即使数组包含非字符串的对象,它也可以工作。这是否真的需要是一个意见问题,因为OP确实指定了对象是字符串,但同时额外的工作量可以忽略不计。