objective-c - 对包含包含数组的对象的 Objective-c 数组进行排序

标签 objective-c multidimensional-array

哇...多么好的标题。所以我有一个 NSMutableArray,它分配了从 API 调用中检索到的数据。我无法控制 API 调用响应的结构,我想按照提供的格式对数组进行排序。 (当然欢迎其他解决方案)

这是一个愚蠢的例子(为了简单起见),但是我想要排序的数组可以这样表示:

myObjects = 
array(
  0 => object(
    name => @"Jack",
    favoriteNumbers => object(
      numbers => array(
        0 => 7,
        1 => 11,
        2 => 6
      )
    )
  ),
  1 => object(
    name => @"Jill",
    favoriteNumbers => object(
      numbers => array(
        0 => 1,
        1 => 2,
        2 => 3
      )
    )
  ),
  3 => object(
    name => @"Sally",
    favoriteNumbers => object(
      numbers => array(
        0 => 68,
        1 => 103,
        2 => 99
      )
    )
  )
)

我知道我可以简单地按名称排序,例如:

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortByDurationArray = [myObjects sortedArrayUsingDescriptors:sortDescriptors]; 
// the variable "myObjects" holds the array representation from above

但我如何根据每个人的第一个最喜欢的数字对数组进行排序?

所需的结果将按以下顺序对数组进行排序:Jill、Jack、Sally;因为吉尔第一个最喜欢的数字是 1, jack 的是 7,莎莉的是 68。

最佳答案

您可以在这里使用 NSSortDescriptorselector 属性。如果这些对象是它们自己的子类,则创建一个选择器——类似 -compareFavoriteNumberToObject: 的东西,返回一个 NSComparisonResult。如果对象只是类似于 NSDictionary 的东西,您可以在类上创建一个类别来进行比较。

关于objective-c - 对包含包含数组的对象的 Objective-c 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382284/

相关文章:

objective-c - 等待完成 block 在 AFNetworking 请求中完成

ios - UIAlertView-使两个输入字段均安全

ios - 如何让 UIView 在滚动时改变它的大小

Swift 3d 数组创建

objective-c - 从 NSNotification 对象中转换值

ios - 两个 nsmutablearray 值在 ios 中与另一个值交换

java - 创建随机数并根据该数字创建二维数组

c - 在C中初始化一个大的二维数组

c - 将文本文件读入二维数组

javascript - 如何从多维 json 字符串中检索数据?