Как использовать NSSortDescriptor без ключа

У меня есть NSSet из NSStrings. Я хочу вернуть отсортированный по алфавиту массив из NSSet элементов с помощью метода – sortedArrayUsingDescriptors:.

Я прочитал документацию NSSortDescriptor и до сих пор не знаю, как создать ее для простых объектов NSString.

Какие key указать? Есть ли лучший подход, чем использование NSSortDescriptor?


person Crazy Yoghurt    schedule 13.11.2013    source источник
comment
По чему вы хотите его отсортировать?   -  person Peter Foti    schedule 13.11.2013
comment
По алфавиту. Никаких причудливых вещей :)   -  person Crazy Yoghurt    schedule 13.11.2013


Ответы (3)


Я не могу найти документально подтвержденного, что передача nil для ключа безопасна и означает использование самого объекта. Так что я бы не рискнул его использовать. Вместо этого вы можете использовать @"self".

person Ken Thomases    schedule 13.11.2013
comment
Не могли бы вы опубликовать ссылку на документацию по Objective-C, где это указано? Я искал вокруг, но не мог найти это. - person Crazy Yoghurt; 14.11.2013
comment
Это не задокументировано конкретно в отношении NSSortDescriptor. Просто все NSObject отвечают на -self, делая self неявным свойством. - person Ken Thomases; 14.11.2013
comment
Я понимаю. Это довольно интуитивно, когда я думаю об этом таким образом. Спасибо за полный ответ. - person Crazy Yoghurt; 14.11.2013

NSSet *sets = [NSSet setWithObjects:@"Peter", @"Brennon", @"Zach", @"Yan", @"Akila", nil];
NSSortDescriptor *desc = [[NSSortDescriptor alloc] initWithKey:nil ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
NSArray *sorted = [sets sortedArrayUsingDescriptors:@[desc]];

Выход из системы:

(
    Akila,
    Brennon,
    Peter,
    Yan,
    Zach
)
person Peter Foti    schedule 13.11.2013

Просто используйте nil в качестве ключа. Например.

[set sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:nil ascending:YES selector:@selector(compare:)]]]
person Guy Kogus    schedule 13.11.2013
comment
Могу я спросить, документировано ли где-нибудь, что передача ключа nil безопасна и имеет эту семантику? - person Ken Thomases; 14.11.2013