2012-03-09 2 views
1

У меня есть выход NSArray. см. ниже. Я хочу сортировать на основе определенного поля чисел (Order) в нем. Пожалуйста, ознакомьтесь с приведенным ниже кодом.iPhone: сбой при сортировке по номеру

Log: resultArray: 
(
     { 
     Name = "Myname1"; 
     Id = "dummyID"; 
     Order = 0; 
     parexId = 15; 
     "__type" = "Question:#myAPI"; 
    }, 
     { 
     Name = "Myname2"; 
     Id = "fatID"; 
     Order = 1; 
     parexId = 16; 
     "__type" = "Question:#myAPI"; 
    } 
     { 
     Name = "Myname3"; 
     Id = "colorID"; 
     Order = 2; 
     parexId = 17; 
     "__type" = "Question:#myAPI"; 
    } 

) 

Код:

NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"Order" ascending:YES comparator:^(id obj1, id obj2) { 
      return [obj1 compare:obj2 options:NSNumericSearch]; 
    }]; 
    resultArray = [resultArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]]; // resultArray contents the above output values. 

НО это происходит сбой при сравнении происходит во время сортировки. Краш ошибка:

-[__NSCFNumber compare:options:]: unrecognized selector sent to instance 0x6b514b0 

Может кто-то пожалуйста, помогите мне, что я делаю неправильно здесь?

Спасибо!

ответ

2

Заказать это поле номер. У него нет метода сравнения: параметры. Вы должны использовать

[obj1 Сравнить: obj2];

+0

Я пойду с ним, спасибо. – Getsy

0

Использование как под ним будет работать нормально

NSSortDescriptor *aSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Order" ascending:YES]; 
    [resultArray sortUsingDescriptors:[NSArray arrayWithObject:aSortDescriptor]]; 
    [aSortDescriptor release]; 
+0

Это дает ошибку компиляции как «Тип получателя NSArray, например, сообщение не объявляет метод с селектором arrayWithObject« – Getsy

+0

resultArray должен быть NSMutableArray – Narayana

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