Удалить дубликаты из массива, сравнивая свойства его объектов

Предположим, у меня есть класс Event, и у него есть 2 свойства: action (NSString) и date (NSDate).

И предположим, у меня есть массив объектов Event. Проблема в том, что "Дата" свойства могут совпадать.

Мне нужно удалить дубликаты, это означает, что 2 разных объекта с одинаковой датой являются дубликатом.

Я могу удалить дубликаты в любом массиве строк или nsdates, их легко сравнивать. Но как это сделать со сложными объектами, где нужно сравнивать их свойства?

Дон»не спрашивайте меня, что я сделал до сих пор, потому что единственное, что приходит мне в голову, это пузырёк,но это'Решение новичка, и медленно.

Любая помощь высоко ценится (ссылки, ссылки, код).

Заранее спасибо.

РЕДАКТИРОВАТЬ

Благодаря dasblinkenlight я сделал собственный метод:

- (NSArray *)removeDuplicatesInArray:(NSArray*)arrayToFilter{

    NSMutableSet *seenDates = [NSMutableSet set];
    NSPredicate *dupDatesPred = [NSPredicate predicateWithBlock: ^BOOL(id obj, NSDictionary *bind) {
        YourClass *e = (YourClass*)obj;
        BOOL seen = [seenDates containsObject:e.propertyName];
        if (!seen) {
            [seenDates addObject:e.when];
        }
        return !seen;
    }];
    return [arrayToFilter filteredArrayUsingPredicate:dupDatesPred];
} 

ВотYourClass имя вашего класса, к которому принадлежит объект, иpropertyName это свойство того объекта, который вы собираетесь сравнивать.

Предположим, что self.arrayWithObjects содержит объекты YourClass.

Заполнив его, используйте

self.arrayWithObjects = [self removeDuplicatesInArray:self.arrayWithObjects];

и вы сделали.

Все кредиты на dasblinkenlight. Ура!

Ответы на вопрос(6)

Ваш ответ на вопрос