2015-08-01 2 views
0

Я хотел бы изменить порядок NSMutableArray. ЭтоПереупорядочивание NSMutableArray с неестественным порядком сортировки

1, 7, 0, 45, 0, 0, 500, 0

бы стать как этот

1, 7, 45, 500, 0, 0, 0, 0.

Все, что не является 0 (или некоторым специальным значением), должно сортироваться нормально в начале с 0s в конце. Как мне это сделать?

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

+0

У вас не может быть 'nil' в массиве - что на самом деле находится в вашем массиве? –

+0

Извините, я имею в виду 0 – Curlip

+3

Ну, это сортировка; просто с каким-то странным задним порядком. На этом сайте представлено множество примеров. – trojanfoe

ответ

2

Вы можете сортировать что-то вроде

[array sortUsingComparator:^(NSNumber *obj1, NSNumber *obj2) { 
    if ([obj1 isEqualToNumber:@0]) { 
    return NSOrderedDescending; 
    } else if ([obj2 isEqualToNumber:@0]) { 
    return NSOrderedAscending; 
    } 

    return [obj1 compare:obj2]; 
}]; 
+0

Извините, что я новичок в iOS и Objective-c, как бы использовать это приложение – Curlip

+0

Show код, который у вас есть, и затем я могу показать, как он подходит в –

+0

Я еще не пытался, я больше ищу теорию. (они не являются номерами) – Curlip

0

Не волнуйтесь, просто используя removeObjectAtIndex: работал хорошо, что я хотел. removeObjectAtIndex: сдвигает все объекты путем смещения их индекса на -1. Если кому-то нужно сохранить 0 в конце, вы можете просто добавить их после их удаления.

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