如何使用字典中的键值从NSMutableArray搜索NSDictionary对象

时间:2017-04-17 07:05:54

标签: ios nsmutablearray nsdictionary

我有一个包含NSDictionaries的数组。

[
  {
    "ObjectId": 20,
    "ObjectName": "Leave Request",
    "RequestItems": []
    "ClassName": "req-auth"
  },
  {
    "ObjectId": 22,
    "ObjectName": "Cancel Leave Request",
    "RequestItems": []
    "ClassName": "req-auth"
  }

我想检查此数组Leave RequestCancel Leave Request个对象是否可用。所以我将通过ObjectName搜索对象。但我不明白如何使用这些对象的1值来搜索这些对象。请帮我。 感谢

3 个答案:

答案 0 :(得分:0)

试试这个

NSString *searchString = @"Cancel";
    NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
        return [evaluatedObject[@"ObjectName"] localizedCaseInsensitiveContainsString:searchString];
}];
    filteredContentList = [NSMutableArray arrayWithArray:[searchListValue filteredArrayUsingPredicate:predicate]];

答案 1 :(得分:0)

您可以尝试使用NSPredicate。像这样:

-(NSArray *)array:(NSArray *)array filteredWithString:(NSString *)string{

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.ObjectName CONTAINS[cd] %@",string];

    return [array filteredArrayUsingPredicate:predicate];
}

只需传入数组以使用要过滤的字符串进行过滤,然后将其调用到要过滤的位置。

一些事情:此处cd用于执行不区分大小写的比较,如果您希望区分大小写,请从字符串中删除cdObjectName是您要过滤的属性。如果您想要进行精确比较,可以将CONTAINS更改为LIKE

答案 2 :(得分:0)

如果您只想从数组中的每个字典中获取objectName,请执行以下操作:

   for dict in arrayOfData{
        if let strObjectName : String = dict["ObjectName"] as? String{
        print(strObjectName)
        }
   }