哇...这是一个标题。我有一个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]; // 变量"myObjects"持有上面的数组表示
但是,我如何按每个人的第一个最喜欢的数字对数组进行排序呢?
期望的结果将按以下顺序对数组进行排序: Jill、Jack、Sally; 因为Jill的第一个最喜欢的数字是1,Jack的是7,而Sally的是68。
这是一个愚蠢的例子(为了保持简单),但我想要排序的数组可以表示为:
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]; // 变量"myObjects"持有上面的数组表示
但是,我如何按每个人的第一个最喜欢的数字对数组进行排序呢?
期望的结果将按以下顺序对数组进行排序: Jill、Jack、Sally; 因为Jill的第一个最喜欢的数字是1,Jack的是7,而Sally的是68。
-compareFavoriteNumberWithColor:
,因为你不能使用任何对象。 - Jeff Kelley