2012-03-13 5 views
-2

Я должен использовать NSMutableSet для хранения моих строковых объектов. Я бледный, чтобы хранить их в правильном порядке, например, от самых маленьких до большого числа:Сортировка NSMutableSet

1 
2 
3 
4 

Как когда-либо, если это сделать:

NSMutableSet *set = [[NSMutableSet alloc] init]; 
[set addObject:[NSString stringWithFormat:@"1"]]; 
[set addObject:[NSString stringWithFormat:@"2"]]; 
[set addObject:[NSString stringWithFormat:@"3"]]; 
[set addObject:[NSString stringWithFormat:@"4"]]; 
NSLog(@"set is %@",set); 
[set release]; 

Я не понимаю, что я хотел, но вместо этого:

set is {(
    3, 
    1, 
    4, 
    2 
)} 

Итак, я думаю, мне нужно отсортировать их, чтобы получить желаемый результат? Но на самом деле я не могу найти ни одного примера.

Возможно, кто-то может мне помочь в этом?

Спасибо.

EDIT: Я не могу использовать еще. Только NSMutableSet или NSSet

+0

Почему не могли Вместо этого вы используете NSMutableOrderedSet или NSOrderedSet? –

ответ

0

Наборы неупорядоченный по определению. Вам нужен упорядоченный набор, используя NSMutableOrderedSet или NSOrderedSet, которые доступны в MacOS X 10.7 или новее.

1

«NSSet» является неупорядоченным. Он должен содержать только уникальные предметы (без дубликатов). Из яблок Документов NSSet:

... объявить программный интерфейс к неупорядоченной коллекции объектов.

Если вы хотите заказать, перейдите на NSMutableArray или NSMutableOrderedSet.

+0

Я не могу использовать еще. Просто NSMutableSet или NSSet – Streetboy

3

Как и все остальные, NSSet по определению является несортированным. Howeever, если есть использовать NSMutableSet вы можете получить отсортированный массив из элементов, используя что-то вроде (предполагаюсь, что в этом случае элементы являются строками)

NSArray* unsorted = [mySet allObjects]; 
NSArray* sorted = [unsorted sortedArrayUsingComparator: ^(NSString* string1, NSString* string2) 
        { 
         return [string1 localizedCompare: string2]; 
        }]; 
1

попробовать этот

NSMutableSet *set = [[NSMutableSet alloc] init]; 
[set addObject:[NSString stringWithFormat:@"1"]]; 
[set addObject:[NSString stringWithFormat:@"2"]]; 
[set addObject:[NSString stringWithFormat:@"3"]]; 
[set addObject:[NSString stringWithFormat:@"4"]]; 

NSLog(@"%@",set); // Output (3,1,4,2,5) ... all objects 

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES]; 
NSArray *sortedArray = [set sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]]; 

NSLog(@"%@",sortedArray); 
+0

Как вы положили @ "description"? Что это? – Developer

Смежные вопросы