примечание от земли N00B снова. Я читал много о сортировке массивов - хотел попробовать метод блока, но не обернул вокруг него голову. Вместо этого я выбрал метод дескрипторов. Я прочел это Sort NSArray of custom objects by their NSDate properties и это How to sort an NSMutableArray with custom objects in it? среди ульд и согдийцев других. В моем коде я это сделал:Сортировка NSArray по двум свойствам - int и дата
NSString *lastHighScore = @"_highScore";
NSString *dateScoreCreated = @"_dateCreated";
NSSortDescriptor *highScoreDescriptor = [[[NSSortDescriptor alloc]
initWithKey:lastHighScore
ascending:NO
selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
NSSortDescriptor *dateScoreCreatedDescriptor = [[[NSSortDescriptor alloc]
initWithKey:dateScoreCreated
ascending:NO
selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
NSArray *descriptors = [NSArray arrayWithObjects:highScoreDescriptor,
dateScoreCreatedDescriptor, nil];
NSArray *sortedArray = [[[FlipHighScoreStore sharedStore] allHighScores] sortedArrayUsingDescriptors:descriptors];
К сожалению, я получаю сообщение об ошибке, чтобы начать с - инициализатором элемент не время компиляции элемента. Я посмотрел на это и попробовал установить NSSortDescriptor *highScoreDescriptor = nil
, но потом я получаю предупреждение о том, что highScoreDescriptor «Type Specifier Missing, по умолчанию int», который в этом случае в порядке, но не так хорошо для объекта Date в следующем дескрипторе. (Оказывается, у меня также появляется ошибка, говоря, что я переопределяю highSoreDescriptor другим типом.)
Кроме того, есть ли какой-нибудь список доступных селекторов? Я сомневаюсь, что localizedCaseInsensitiveCompare:
- это то, что я хочу использовать, поскольку первое свойство «_highScore» - это int, а второе «_dateCreated» - это дата. Я где-то читал, что значение по умолчанию «сравнивается», поэтому я могу просто поставить «compare:»? (Найдено один ответ, я думаю, - я могу использовать (intValue) для первого дескриптора:
selector:@selector(intValue)] autorelease];
Больше чтение заставляет меня думать, что я могу избавиться от линии селекторной полностью на дату сортировки, что правильно.?
Наконец, если я скажу ascending:NO
, что так же, как нисходящий? Я бы предположил, что это, но никто не знает, с программированием, делает один?
ли завернуть я весь этот код в своем собственном методе? Или я могу (до тех пор, позже) просто выложить его в код, где я выкладываю стол?
Этот проект не является ARC.