【问题标题】:objective-c sort NSMutableSet of NSStrings? [duplicate]Objective-c 对 NSStrings 的 NSMutableSet 进行排序? [复制]
【发布时间】:2012-01-26 09:20:04
【问题描述】:

可能重复:
What is the most efficient way to sort an NSSet?

我目前有一个带有以下字符串列表的 NSMutableSet。例如。: {@"c",@"d",@"e",@"f",@"g",@"a"}

谁能告诉我如何按字母顺序对这些值进行排序?有没有办法使用sortedArrayUsingDescriptors: 做到这一点?

【问题讨论】:

  • 上述帖子中的选择器在 NSSet 上可用。请注意,它将不再是一个集合。数组是有序的,集合不是。
  • 我会说这不是该问题的重复。具体来说,另一个更一般的问题对如何在这个特定的边缘情况下创建描述符提供零帮助,它并不像看起来那么明显,因为你首先想到的是,“但我不想基于在对象上的一个键上;我想根据对象本身进行排序”。当然,答案是“self”键给了你这个,但对于不知道前后键值编码的人来说,它并不是特别明显。 :-)

标签: iphone objective-c nsmutableset


【解决方案1】:

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

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

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

【讨论】:

  • 如果你传递“self”作为key,你会得到同样的结果。我认为通过请求描述键,您实际上是在做额外的工作。具体来说,我认为它通过对请求的键的值调用描述方法来获取用于排序的值,因此您实际上是在获取描述的描述)。
  • @dgatwood 你打败了我。我刚刚编写了一些代码来对 NSStrings 数组进行排序,并决定将 @"self" 作为键。来这里看看是否有替代品。
  • @dgatwood 你没有错,但是使用 description 更健壮一点,因为即使数组包含不是字符串的对象,它也能工作。这是否真的可取是一个见仁见智的问题,因为 OP 确实指定对象是字符串,但同时额外的工作量可以忽略不计。
【解决方案2】:

我将假设这个问题Sorting NSSet 是您的问题的答案。对于难以点击...

[mySet sortedArrayUsingDescriptors:descriptors];

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      相关资源
      最近更新 更多