Являются ли предикаты наиболее эффективным способом поиска объекта в NSSet?

Читая документацию о NSSet это говорит:

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

Это именно то, что мне нужно, так как производительность очень важна для меня.

Поэтому я переопределил хэш в классе, который в конечном итоге будет заполнен в NSSet.

- (NSUInteger)hash
{
    return [[self recordDate] hash];
}

Другими словами, recordDate всегда уникален в моем случае, и я ожидаю, что здесь будут уникальные хэши.

Согласно документации, кажется, что единственный способ, которым я мог бы искать объект в NSSet/NSMutableSet, был бы через предикаты.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"recordDate == %@", recordDate];
NSSet *objectsWithDesiredWeek = [mySet filteredSetUsingPredicate:predicate];

Я не уверен, если я не пропускаю что-то. Это самый эффективный способ поиска объекта в NSSet? Есть ли что-то вроде Key/Value?

1 ответ

Я думаю, я не понимаю вопроса. NSSet имеет встроенный метод containsObject. Почему это не отвечает вашим потребностям?

Другие вопросы по тегам