let have nsindexset
of array indexes. want sort nsindexset
depends on nsarray
.
so, let have array :
array = @[1,4,3,8,6,2,9];
and index set
indexset : (2,4,5,6)
so "sub array" of indexes be
subarray = @[3,6,2,9]
so have :
i have : indexset : (2,4,5,6) array = @[1,4,3,8,6,2,9]; return indexset : (5,2,4,6) --> sorted indexes of "sub array".
how achieve this?
you can't achieve want. nsindexset
doesn't maintain order separate order of indexes themselves. in index order.
you build array of number objects treat indexes.
nsarray* array = /* ... */; nsmutablearray* indexes = [[nsmutablearray alloc] init]; [indexset enumerateindexesusingblock:^(nsuinteger idx, bool *stop){ [indexes addobject:@(idx)]; }]; [indexes sortusingcomparator:^nscomparisonresult(nsnumber* obj1, nsnumber* obj2){ nsuinteger index1 = obj1.unsignedintegervalue; nsuinteger index2 = obj2.unsignedintegervalue; id element1 = array[index1]; id element2 = array[index2]; return [element1 compare:element2]; }];
Comments
Post a Comment