繁体   English   中英

如何在Objective-C中快速搜索对象数组

[英]How to quickly search an array of objects in Objective-C

如果属性是字符串类型,在Objective-C中是否有一种方法可以通过包含对象的属性搜索对象数组?

例如,我有一个人物对象的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上面是您要在其上执行搜索操作的对象内的变量名称。 希望它会对你有所帮助。

您必须进行线性搜索,比较数组中的每个条目,看它是否与您要查找的内容相匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM