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.

链接地址: http://www.djcxy.com/p/36108.html

上一篇: NSLocale setPreferredLanguage

下一篇: c包含包含数组的对象的数组