哇...多么好的标题。所以我有一个 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。
最佳答案
您可以在这里使用 NSSortDescriptor
的 selector
属性。如果这些对象是它们自己的子类,则创建一个选择器——类似 -compareFavoriteNumberToObject:
的东西,返回一个 NSComparisonResult
。如果对象只是类似于 NSDictionary
的东西,您可以在类上创建一个类别来进行比较。
关于objective-c - 对包含包含数组的对象的 Objective-c 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382284/