ios - Sorting an NSDictionary, descending. How do I send options with the `compare:options:` selector? -


i attempting sort nsdictionary.

from apple docs see can use keyssortedbyvalueusingselector:

nsdictionary *dict = [nsdictionary dictionarywithobjectsandkeys:     [nsnumber numberwithint:63], @"mathematics",     [nsnumber numberwithint:72], @"english",     [nsnumber numberwithint:55], @"history",     [nsnumber numberwithint:49], @"geography",     nil];  nsarray *sortedkeysarray = [dict keyssortedbyvalueusingselector:@selector(compare:)]; 

which gives:

// sortedkeysarray contains: geography, history, mathematics, english 

but want:

// sortedkeysarray contains: english, mathematics, history, geography 

i have read can use compare:options:, , nsstringcompareoptions change comparison compare in other direction.

however don't understand how send compare:options: with option in selector.

i want this:

nsarray *sortedkeysarray = [dict keyssortedbyvalueusingselector:@selector(compare:options:nsorderdescending)]; 

how should switch order of comparison?

related: https://discussions.apple.com/thread/3411089?start=0&tstart=0

option 1: use comparator invoke -compare: in reverse: (thanks dan shelly!)

nsarray *blocksortedkeys = [dict keyssortedbyvalueusingcomparator: ^(id obj1, id obj2) {      // switching order of operands reverses sort direction      return [objc2 compare:obj1]; }]; 

just reverse descending , ascending return statements , should want.

option 2: reverse array have:

see how can reverse nsarray in objective-c?


Comments

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -