我使用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;小时= 3;值= 0;})
我可以使用嵌套for循环遍历每个dict。但我理想的是提取“日”和“小时”,其中值为“1”。 不在上面的字典数组仅用于演示目的。实际数组有24 * 7个词典项目,用于计算一周中每一天的每小时。我的最终目标是提取值为1的时隙。 例如,在'day'0时,0到小时1之间的值为'1'。
答案 0 :(得分:2)
使用格式为value == 1
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"value == 1"];
NSArray *filteredArray = [jsonArray filteredArrayUsingPredicate:predicate];
NSLog(@"%@", filteredArray);
答案 1 :(得分:0)
创建一个谓词,它将检查字典是否有
value: 1
。然后使用此谓词过滤您的jsonArray
,如下所示:
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]];