sorting - Sort two-dimensional NSMutableArray using the last element the inner arrays -


i have following nsmutablearray:

 (a|b|c|d|e|255,  f|g|h|i|j|122,  k|l|m|n|o|555) 

i trying sort objects in array using last component (255, 122, 555). right have following code:

[myarray sortusingselector:@selector(localizedcaseinsensitivecompare:)]; 

as expected, method sorts array first element (a, f, k).

i read nssortdescriptor, example:

 nssortdescriptor *sort = [[[nssortdescriptor alloc] initwithkey:@"datemodified" ascending:yes] autorelease]; 

if use it, not clear put parameter in initwithkey.

you can use sort descriptor, takes last object of "inner" arrays , sort that.

since sort descriptors use key-value coding (kvc), need aware arrays respond valueforkey: in special way - pass normal key on each of objects contain.

you need know methods not take parameter and return value can accessed through kvc if normal properties.

all adds following:

  1. each of objects contained in array (i.e., inner arrays) have key want sort by: lastobject
  2. but since objects instances of nsarray pass key on objects they contain - not want.
  3. you therefore need use special escape in key name situation, @, making actual key use @lastobject

so make long story short, can want in way:

nsmutablearray *array = ... // array  nssortdescriptor *sd = [nssortdescriptor sortdescriptorwithkey: @"@lastobject"                                                      ascending: yes                                                        selector: @selector(localizedcaseinsensitivecompare:)];  [array sortusingdescriptors: @[sd]]; 

you'll notice "@" in key name, within string.

this escape character works other collection classes, instance if want access allkeys dictionary through kvc, key should use @allkeys.


Comments

Popular posts from this blog

Android layout hidden on keyboard show -

google app engine - 403 Forbidden POST - Flask WTForms -

c - Why would PK11_GenerateRandom() return an error -8023? -