2013-09-02 2 views
4

У меня есть массив пользовательских объектов. Скажем, объект называется A, и это свойство имеет свойство timestamp. (Это тип NSDate.)Как отсортировать по дате пользовательского объекта в NSArray ...?

Теперь мне нужно получить объекты, отфильтрованные в разных массивах для (MOnth и Year as unique key).

Я пытаюсь использовать предикаты, но не могу понять, как разместить его на объектах даты.

Вы можете посмотреть на картинку ниже, чтобы увидеть, где именно мне нужно использовать ...

EDIT: Удаление изображения.

+0

очень хороший вопрос, я следовать ваш пост за ответ ... хорошая попытка :) –

ответ

4

Вот фрагмент кода, который может помочь вам

NSArray *sortedArray = [unSortedArray sortedArrayUsingComparator: ^NSComparisonResult(DateObj *id1, DateObj *id2) { 
      if(id1.timeStamp < id2.timeStamp) 
       return YES; 
      else 
       return NO; 
     }]; 
+0

Это будет просто соберите его, но он не вернет уникальную комбинацию (месяц и год) –

+1

Извините, но этот ответ неверен. 1) Вы не можете сравнивать объекты NSDate с '<'. 2) Компаратор должен вернуть NSOrderedAscending (-1), NSOrderedSame (0) или NSOrderedDescending (+1), а не YES или NO. - В вопросе явно указано «... timestamp. (Это тип NSDate.)». –

+1

@ShafKhan: Даже если timestamp является скалярным свойством, так что вы можете сравнивать с '<': возврат только YES или NO из компаратора является неправильным. Посмотрите документацию по [NSComparisonResult] (https://developer.apple.com/library/ios/DOCUMENTATION/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Constants/Reference/reference.html#//apple_ref/c/tdef/NSComparisonResult). –

2

Это должно работать:

[myArray sortUsingDescriptors:[NSArray arrayWithObject: 
            [[NSSortDescriptor alloc] initWithKey:@"timestamp" ascending:NO]]]; 
+0

Это просто сортирует, но не вернет уникальную комбинацию (месяц и год). –

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