Какао - массив не сортируется? - PullRequest
0 голосов
/ 17 марта 2010

У меня есть этот набор

NSMutableSet *mySet = [NSMutableSet setWithObjects: @"2", @"8", @"7", @"0", @"3", nil];

Я копирую набор в массив и сортирую его, используя

NSArray *sortedArray = [[mySet allObjects] sortedArrayUsingSelector:@selector(compare:)];

Полученный массив находится в том же порядке, что и набор, и не сортируется. Почему?

спасибо за любую помощь.

РЕДАКТИРОВАТЬ: ИСПРАВИТЬ ТИПО.

Ответы [ 2 ]

3 голосов
/ 17 марта 2010

Я вставил и запустил твой код следующим образом:

NSMutableSet *mySet = [NSMutableSet setWithObjects: @"2", @"8", @"7", @"0", @"3", nil];
NSLog(@"mySet=%@",mySet);
NSArray *sortedArray = [[mySet allObjects] sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"sortedArray=%@",sortedArray);

Какие выходы:

2010-03-17 11:06:27.982 iPhoneTestBed[41907:207] mySet={(
    0,
    2,
    7,
    8,
    3
)}
2010-03-17 11:06:27.984 iPhoneTestBed[41907:207] sortedArray=(
    0,
    2,
    3,
    7,
    8
)

Я думаю, что ваша проблема с регистрацией отсортированного массива. Возможно, вы случайно регистрируете набор вместо массива. Я потратил полдня на то, чтобы сделать это.

3 голосов
/ 17 марта 2010

Хм, это правильно сортирует, как только я исправил конструкцию набора к

NSMutableSet *mySet = [NSMutableSet setWithObjects: @"2", @"8", @"7", @"0", @"3", nil];

Помните, "abc" - это char*, который является примитивным типом, который вы редко используете в Objective-C, и вы не можете поместить его в NSArray. @"abc" - это NSString, который является объектом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...