ios - ordering array with another array -


i have following categorynames array.

enter image description here

and now, have categorytempelements , has cname property. need know how order categorytempelements order of categorynames.

enter image description here

update: have added sortorder property category object , tried following order not change.

for (category* in categorytempelements) {       int index = (int)[categorynames indexofobject:a.cname];       a.sortorder = index; }  nssortdescriptor *sortdescriptor = [[nssortdescriptor alloc] initwithkey:@"sortorder" ascending:yes]; nsarray *sortdescriptors = [nsarray arraywithobject:sortdescriptor]; nsarray *sortedarray = [categorytempelements sortedarrayusingdescriptors:sortdescriptors]; 

you need first convert categorynames array dictionary nsstring key , nsnumber int value, value order in array

//this example code, first array (reference value array) nsarray * array = @[@"prueba",@"prueba2",@"prueba3"]; //first need convert array in nsdictionary  nsmutabledictionary * arraydict = [nsmutabledictionary dictionary]; int counter = 0; (nsstring * value in array) {     if(arraydict[value] == nil)     {         arraydict[value] = [nsnumber numberwithint:counter];     }     counter++; } 

after can value , order sortedarrayusingcomparator method, this

//this example of second array categorytempelements nsarray * arrayofobjs = @[[testobject testobjectwithname:@"prueba3"],[testobject testobjectwithname:@"prueba"],[testobject testobjectwithname:@"prueba2"]];      nsarray * sorted = [arrayofobjs sortedarrayusingcomparator:^nscomparisonresult(testobject *  _nonnull obj1, testobject * _nonnull obj2) {         if([((nsnumber*)arraydict[obj1.cname]) intvalue] < [((nsnumber*)arraydict[obj2.cname]) intvalue]){             return nsorderedascending;         }           if([((nsnumber*)arraydict[obj1.cname]) intvalue] > [((nsnumber*)arraydict[obj2.cname]) intvalue]){             return nsordereddescending;         }          return nsorderedsame;     }];       (testobject * obj in sorted) {          nslog(@"%@",obj.cname);     } 

and voila in sorted have array of object sorted first array nsstring order

hope helps


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -