3
Whew ...什么是标题。所以我有一个NSMutableArray被分配了从API调用中获取的数据。我无法控制API调用响应的结构,我想按照提供的格式对数组进行排序。 (其它解决方案的欢迎,当然)Sort Objective-c数组,其中包含包含数组的对象
这是一个愚蠢的例子(让事情变得简单),但我想排序的阵列可以表示这样的事情:
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,杰克的是7,莎莉的是68.
那么你是否暗示在我的“颜色”类中我应该创建一个选择器,例如-compareFavoriteNumberToObject :,它将比较返回NSComparisonResult的两个“颜色”对象?如果是这样,我会做这样的排序数组? [myObjects sortUsingSelector:@selector(compareFavoriteNumberToObject :)]; – 2010-12-07 22:58:06