Являются ли предикаты наиболее эффективным способом поиска объекта в 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. Почему это не отвечает вашим потребностям?