【问题标题】:Filtering an NSArray of NSDictionaries using multiple criteria使用多个条件过滤 NSDictionaries 的 NSArray
【发布时间】:2013-11-12 14:25:51
【问题描述】:

我正在使用以下代码过滤我的数组

NSArray *_filteredArray = [self.allData filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
    NSDictionary *_dataRow = (NSDictionary *)evaluatedObject;
    return ([[[_dataRow valueForKey:@"name"] lowercaseString]  rangeOfString:[self.searchBar.text lowercaseString]].location != NSNotFound);
}]];

正如你在 sn-p 中看到的,我只匹配 @"name";如何检查要与我的过滤器匹配的第二个参数(例如 @"city")?

我尝试了allKeysallValues,但都没有成功。

【问题讨论】:

    标签: ios objective-c cocoa-touch nsarray nspredicate


    【解决方案1】:

    做这样的事情:

    NSArray *_filteredArray = [self.allData filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
    NSDictionary *_dataRow = (NSDictionary *)evaluatedObject;
    return ([[[_dataRow valueForKey:@"name"] lowercaseString]  rangeOfString:[self.searchBar.text lowercaseString]].location != NSNotFound) || ([[[_dataRow valueForKey:@"surname"] lowercaseString]  rangeOfString:[self.searchBar.text lowercaseString]].location != NSNotFound);
    }]];
    

    【讨论】:

    • 你真是太棒了。非常感谢。
    • 很高兴为您提供帮助。当然,添加尽可能多的 OR (||) 语句。如果对您有帮助,您可以接受并投票:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多