【问题标题】:iOS objective C: custom sorting NSarray not default ascending/descendingiOS 目标 C:自定义排序 NSarray 不是默认升序/降序
【发布时间】:2015-04-06 10:27:17
【问题描述】:

我有一个关于 nsarray 的自定义排序的问题。我目前有一个按键(commandeState)排序的讨厌的排序,它可以取 3 个值(5、6、7)。到目前为止,我可以像这样升序/降序对其进行排序:

NSSortDescriptor *descr =  [NSsortDescriptor] sortDescriptorwithKey: @"commandesState" ascending:NO];

我想要实现的是让 nsarray 按 6、5、7 的顺序排序。谁能帮助展示我如何实现这一目标?

提前谢谢你。

【问题讨论】:

  • 下一个系列是什么?,希望你明白排序的意思……你想要一个随机的顺序,反正那不是排序。
  • 在我的数组中,我有带键的对象,我希望我的 nsarray 被排序,第一个元素是值为 6,然后是 5,然后是 7...
  • 数组不能有带键的对象,它使用索引。可能你有不同的结构,比如字典数组。
  • NSsarray of custom objects yes.
  • 在您提供详细结构之前帮不了您。

标签: ios objective-c sorting nsarray nssortdescriptor


【解决方案1】:

迭代 for 循环并相应地管理或排序对象。

用 5,6,7 作为键创建另一个字典,值包含对象数组,其中 key commandeState 是字典键。

然后从上面的字典中通过附加元素创建一个数组。

【讨论】:

  • 如何以几乎随机的顺序循环和排序数组中的对象,第一个元素的值是 6,然后是 5,然后是 7。
【解决方案2】:

你可以使用

NSArray *sortedArray;
sortedArray = [notSortedArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
  if (a.value == 6) {
    return true;
  } else if (b.value == 6) {
    return false;
  } else {
    return a.value > return b.value;
  }
}];

基本上是一个正常的 asc 排序,但有一个超过“6 值”的规则。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多