嘿我想要过滤NSArray。在这个数组中有很多信息,如姓名,城镇,电话号码等。但是阵列中有些城镇是两到三次
我有一个镇上的财产。
所以我只想要arry中与属性匹配的那些对象。
例如: 在数组中:
当属性是纽约时,我想要olny对象1和2.
有谁知道我该怎么办?
这是我的代码:
NSString *filterString = newsArticle;
NSPredicate *prediacte = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"Ort == '%@'",filterString]];
newsTownArray = [news filteredArrayUsingPredicate:predicate];
当我走到界限时:
cell.textLabel.text=[[newsTownArray objectAtIndex:indexPath.row] objectForKey:"Name"];
答案 0 :(得分:4)
您需要使用NSPredicate。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"town == 'New York'"];
[yourArray filterUsingPredicate:predicate];
动态地,您可以创建谓词,如:
NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"town == '%@'",yourInput]];
此处yourInput
是NSString
,其中包含所需的城镇名称。
请查看这些文章了解更多详情:
答案 1 :(得分:0)
但是你可以使用 NSPredicate 在一个数组中完成它,但我建议稍微改变一下,这将增加你的代码和良好的编程方式。
创建具有这些属性Person
,name
和city
的自定义类telephone
。
创建一个存储Person
。
在此之后,你可以很容易地操作/过滤/排序等。
NSString *filterCity=@"Delhi";
NSMutableArray *yourArray=[NSMutableArray arrayWithArray:self.persons];
NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"city == '%@'",filterCity]];
[yourArray filterUsingPredicate:predicate];
NSLog(@"Filtered");
for (Person *per in yourArray) {
NSLog(@"Name: %@, City: %@, Telephone: %@",per.name, per.city, per.telephone);
}
答案 2 :(得分:0)
使用此代码
NSMutableArray *subpredicates = [NSMutableArray array];
for(NSString *term in arryOfWordsToBeSearched) {
NSPredicate *p = [NSPredicate predicateWithFormat:@"self contains[cd] %@",term];
[subpredicates addObject:p];
}
NSPredicate *filter = [NSCompoundPredicate andPredicateWithSubpredicates:subpredicates];
result = (NSMutableArray*)[arryOfDummyData filteredArrayUsingPredicate: filter];