-1

嘿,我想过滤一个 NSArray。在这个数组中有很多信息,如姓名、城镇、电话号码等。但有些城镇在阵列中是两倍或三倍。
我有财产,里面有一个城镇。
所以我只想要数组中与属性匹配的那些对象。

例如:在 Array 中表示:

  1. 弗兰克,纽约,123456
  2. 奥利弗,纽约,123456
  3. 托马斯,波士顿,123456

当房产是纽约时,我想要 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"];
4

3 回答 3

4

为此,您需要使用NSPredicate

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"town == 'New York'"];
[yourArray filterUsingPredicate:predicate];

您可以动态创建谓词,例如:

NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"town == '%@'",yourInput]];

yourInput是一个NSString包含所需城镇名称的。

请查看这些文章以获取更多详细信息:

  1. 代码项目
  2. 用你的面包
于 2013-01-21T12:58:41.910 回答
0

但是,您可以使用NSPredicate在数组中执行此操作,但我建议您做一些不同的事情,这将增加您的代码和良好的编程方式。

创建Person具有这些属性的自定义类namecity并且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);

}
于 2013-01-21T12:58:33.697 回答
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];
于 2013-01-21T13:03:02.497 回答