Как быстро найти массив объектов в Objective-C

Есть ли способ в Objective-C для поиска массива объектов по содержащимся свойствам объекта, если свойства имеют строку типа?

Например, у меня есть объекты NSArray of Person. У человека есть два свойства: NSString * firstName и NSString * lastName.

Каков наилучший способ поиска по массиву, чтобы найти всех, кто соответствует "Ken" в любом месте свойств firstName или lastName?

Ответ 2

попробуйте что-то вроде этого:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstName==%@ OR lastName==%@",@"Ken",@"Ken"];
NSArray *results = [allPersons filteredArrayUsingPredicate:predicate];

Ответ 3

Вы можете просто использовать NSPredicate, чтобы отфильтровать ваш поиск из массива результатов:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.property_name contains[c] %@",stringToSearch];
filteredPendingList = [NSMutableArray arrayWithArray:[mainArr filteredArrayUsingPredicate:predicate]];
NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"property_name"
                                                 ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray;
sortedArray = [filteredPendingList sortedArrayUsingDescriptors:sortDescriptors];

Итак, вы получите отсортированный массив с фильтрованным результатом. property_name выше - это имя переменной внутри вашего объекта, на котором вы хотите выполнить операцию поиска. Надеюсь, это поможет вам.

Ответ 4

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