从 NSArray 过滤 NSDictionary

Posted

技术标签:

【中文标题】从 NSArray 过滤 NSDictionary【英文标题】:Filter NSDictionary from NSArray 【发布时间】:2015-09-03 06:50:27 【问题描述】:

我有一个 NSArray,它包含带有键的 NSDictionary 对象"name","age","weight" 其中键名是 NSString ,age 是 NSInteger ,weight 是 float Value

我需要用以下条件过滤 NSArray 1.名称包含'abc' 2.18岁以下 3.体重小于50

我们将不胜感激

【问题讨论】:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.name CONTAINS[c] %@ AND SELF.age.integerValue 【参考方案1】:

这可行,但一点也不优雅。

NSMutableArray *filteredArray = [[NSMutableArray alloc]init];
for (NSDictionary *dic in myArray)

int age = [[dic objectForKey:@"age"]intValue];

     if (age < 18)

        float weight = [[dic objectForKey:@"weight"]floatValue];
        if (float < 50)

        string name = [dic objectForKey:@"name"];
        if (![string rangeOfString:@"bla"].location == NSNotFound) 
            [filteredArray addObject:dic];
         

        
     

另一个优雅的解决方案是使用枚举块和谓词来检查您的字典内容,但我在 Objective-C 中不够舒服。

【讨论】:

以上是关于从 NSArray 过滤 NSDictionary的主要内容,如果未能解决你的问题,请参考以下文章

使用特定键的值过滤 NSDictionary 的 NSArray

使用 NSDictionary 按 int 值过滤 NSArray

使用 NSPredicate 根据 NSDictionary 键过滤 NSArray

如何通过键过滤 NSArray:值,即在 NSDictionary

更新/更改存储在 NSArray 中的 NSDictionary 键的值

从 NSDictionary 对象的 NSArray 中,如何获取唯一的 NSArray