搜索字典数组

Searching array of Dictionaries

我正在使用 api 调用从服务器获取数据。使用 NSJSONSerialization

NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: responseData options: NSJSONReadingMutableContainers error: &e];

我得到了字典数组。

({day = 0;hour = 0;value = 1; },{day = 0;hour = 1;value = 1;},day = 0;hour =2;val=0;},{day = 0;hour = 3;value = 0;})

我可以在其中使用嵌套的 for 循环遍历每个字典。但我最理想的是提取值为“1”的 'day' 和 'hour'。 以上字典数组仅用于演示目的。实际数组有 24*7 个字典项来说明一周中每一天的每个小时。我的最终目标是提取值为 1 的时间段。 例如,'day' 0 值在第 0 小时到第 1 小时之间为“1”。

Create an predicate, which will check if dictionary have value: 1. Then filter your jsonArray with this predicate as following:

NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: responseData options: NSJSONReadingMutableContainers error: &e];
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
  // EvaluatedObject will be dictionary object while applied on jsonArray
  return [evaluatedObject[@"value"] intValue] == 1;
}];
filteredarr = [NSMutableArray arrayWithArray:[jsonArray filteredArrayUsingPredicate:predicate]];

使用格式为 value == 1

的谓词
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"value == 1"];
NSArray *filteredArray = [jsonArray filteredArrayUsingPredicate:predicate];
NSLog(@"%@", filteredArray);