我试图用一个对象中的两个实体来过滤我的数组,就像我有一个Person对象,其中我有名字,地址,数字,电子邮件等.我试图用名称和数字过滤我的数组对象列表.如何使用NSPredicate实现这一目标?
创建谓词(以下假定您的Person
类有name
和number
字符串属性):
NSString *nameFilter = @"Steve*"; NSString *numberFilter = @"555-*"; NSPredicate *pred = [NSPredicate predicateWithFormat:@"(name like %@) or (number like %@)", nameFilter, numberFilter];
然后,过滤阵列(这是假设你有一个NSArray
的Person
对象):
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]]];