当前位置:  开发笔记 > IOS > 正文

NSMutableArray和NSPredicate过滤

如何解决《NSMutableArray和NSPredicate过滤》经验,为你挑选了1个好方法。

我试图用一个对象中的两个实体来过滤我的数组,就像我有一个Person对象,其中我有名字,地址,数字,电子邮件等.我试图用名称和数字过滤我的数组对象列表.如何使用NSPredicate实现这一目标?



1> dreamlax..:

创建谓词(以下假定您的Person类有namenumber字符串属性):

NSString *nameFilter = @"Steve*";
NSString *numberFilter = @"555-*";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"(name like %@) or (number like %@)", nameFilter, numberFilter];

然后,过滤阵列(这是假设你有一个NSArrayPerson对象):

NSArray *personArray = /* obtain from somewhere */;
NSArray *filtered = [personArray filteredArrayUsingPredicate:pred];

结果将是一个包含可能是"史蒂夫","史蒂文"等Person对象的数组,name其编号以555-.

编辑

你所说的并没有多大意义.您无法从类中删除属性(或者更确切地说,您不应该删除).如果您只想要一个只包含名称和数字的数组,则必须遍历Person对象数组:

NSMutableArray *result = [NSMutableArray array];

for (Person *p in personArray)
    [result addObject:[NSString stringWithFormat:"%@ : %@", [p name], [p number]]];

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有