Objective-C 中是否有一种方法可以通过所包含对象的属性来搜索对象数组(如果属性是字符串类型)?
例如,我有一个 Person 对象的 NSArray。 Person 有两个属性,NSString *firstName 和 NSString *lastName。
搜索数组以查找在firstName 或lastName 属性中任意位置匹配“Ken”的每个人的最佳方法是什么?
尝试这样的事情:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstName==%@ OR lastName==%@",@"Ken",@"Ken"];
NSArray *results = [allPersons filteredArrayUsingPredicate:predicate];
您可以简单地使用 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 是您要对其执行搜索操作的对象内的变量名称。希望对你有帮助。
您必须进行线性搜索,比较数组中的每个条目,看看它是否与您要查找的内容匹配。