c Array that contains Objects which contain Arrays
Whew... what a title. So I have a NSMutableArray that is assigned data retrieved from an API call. I don't have control of the structure of the API call response, and I would like to sort the array in it's provided format. (other solutions welcome, of course)
This is a silly example (to keep things simple), but the array I'm wanting to sort can be represented something like this:
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
)
)
)
)
I know I can simply sort by name with something like:
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
But how would I sort the array by each persons 1st favorite number?
The desired result would sort the array in the following order: Jill, Jack, Sally; since Jill's 1st favorite number is 1, Jack's is 7 and Sally's is 68.
You can use NSSortDescriptor 's selector property here. If these objects are their own subclass, then create a selector—something like -compareFavoriteNumberToObject: that returns an NSComparisonResult . If the objects are just something like an NSDictionary , you can make a category on the class to do the comparison.
上一篇: NSLocale setPreferredLanguage
下一篇: c包含包含数组的对象的数组
