2012-03-16 2 views
3

Мне нужен обратный (сортировка по убыванию) a NSMutablearray.I пробовал следующий код, и он работает, но получил предупреждение. Как я могу удалить предупреждение?iPhone: Получил предупреждение, когда обратный A NSMutablearray

NSMutablearray *resStatusArray; 

[resStatusArray sortUsingSelector:@selector(compare:)]; 

    resStatusArray=[[resStatusArray reverseObjectEnumerator] allObjects]; 
Warning:Incompitable pointer types assigning to 'NSMutablearray*_strong' from ' NSarray *' 

ответ

7

пользователь1118321 является правильным в пояснении. Чтобы исправить это, вы должны создать новый изменяемый массив. Я подозреваю, что это безопаснее, чем актерский состав.

resStatusArray = [NSMutableArray arrayWithArray:[[resStatusArray reverseObjectEnumerator] allObjects]]; 
4

Метод allObjects возвращает NSArray*, не NSMutableArray*, поэтому компилятор говорит вам, что ваше задание на NSMutableArray* переменный неверно.

0

Если ваш уверены, что делаете, вы можете использовать бросок:

resStatusArray=(NSMutableArray*_strong)[[resStatusArray reverseObjectEnumerator] allObjects]; 

Однако, я сомневаюсь, что это семантически правильно.

0

Установите его равный:

[NSMutableArray arrayWithArray:[[arrayNameToReverse reverseObjectEnumerator] allObjects]]; 

Это, по существу, создает новый массив, от старого изменяемого массива, но наоборот. Причина, по которой он работает, заключается в том, что NSMutableArray является подклассом NSArray. Таким образом, ваш код для изменения вашего массива будет следующим:

resStatusArray = [NSMutableArray arrayWithArray:[[resStatusArray reverseObjectEnumerator] allObjects]]; 
Смежные вопросы