Как отсортировать NSMutableArray? - PullRequest
0 голосов
/ 30 августа 2011

Я пытаюсь отсортировать NSMutableArray для этого я использую селектор сравнения;

- (NSComparisonResult)compare:(Product *)someObject {
    return [self.Price compare:someObject.Price];
}

HomeProducts = [HomeProducts sortedArrayUsingSelector:@selector(compare:)];

Я хочу отсортировать тот же массив и не хочу назначать другому массиву.

request for member 'Price' in something not a structure or union .... 

не признает себя. Цена.

Ответы [ 2 ]

1 голос
/ 30 августа 2011

Как вы используете, compare: должен быть методом Product.Попробуйте вместо этого использовать блок:

[homeProducts sortUsingComparator: ^NSComparisonResult (id obj1, id obj2)
{
    return [[obj1 Price] compare: [obj2 Price]];
} 

или, если Price простой тип, используйте:

[homeProducts sortUsingComparator: ^NSComparisonResult (id obj1, id obj2)
{
    return ([obj1 Price] < [obj2 Price]) ? NSOrderedAscending :
           ([obj1 Price] > [obj2 Price]) ? NSOrderedDescending :
                                           NSOrderedSame;
} 

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

1 голос
/ 30 августа 2011

Предполагая, что compare: находится в классе Product, вам необходимо использовать консоль для дальнейших исследований.

Когда возникает исключение, каковы значения self и someObject -Могу поспорить, что один из них не является Product или чем-то выпущенным (я думаю, что последний!)

Когда происходит сбой, вы можете проверить значения self и someObject в консоли, как это:

po self
po someObject

(или используйте графический интерфейс слева от консоли).


EDIT Ответ на комментарий:

sortedArrayUsingSelector: возвращает NSArray,HomeProducts является NSMutableArray.Попробуйте вместо этого:

HomeProducts = [[HomeProducts sortedArrayUsingSelector:@selector(compare:)] mutableCopy];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...