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