使用谓词将Json数组中的值与double进行比较

时间:2016-02-20 18:12:43

标签: ios json nspredicate

我正在尝试使用double过滤json数组的字典。通过以下方式完成:

double maxDistance=0.0003;
NSPredicate* nearPredicate=[NSPredicate predicateWithFormat:@"Distance < %ld", maxDistance];
[jsonCloudArray filterUsingPredicate:nearPredicate];

产生崩溃:

  

- [__ NSCFNumber length]:无法识别的选择器发送到实例0x15e0398f0

如果我使用我在Stackoverflow上找到的示例中的代码:

NSLog(@"arrival %@", jsonCloudArray);
NSPredicate *nearPredicate = [NSPredicate predicateWithBlock:^BOOL(NSDictionary *dictionary, NSDictionary *bindings)  {
     NSNumber *idNumber = dictionary[@"Distance"];
     BOOL result= [idNumber doubleValue] < maxDistance;
     NSLog(@"processing distance %f", [idNumber doubleValue]);
     return result;
}];
[jsonCloudArray filterUsingPredicate:nearPredicate];

在处理完阵列的所有元素后,我发生了一次无声崩溃,正如我通过比较两个NSLog所看到的那样。

可能是什么问题?

1 个答案:

答案 0 :(得分:0)

有趣地使用 filteredArrayUsingPredicate ,如下所示:

double maxDistance=0.0003;
NSLog(@"arriva %@", jsonCloudArray);
NSPredicate *nearPredicate = [NSPredicate predicateWithBlock:^BOOL(NSDictionary *dictionary, NSDictionary *bindings) {
    NSNumber *idNumber = dictionary[@"Distance"];
    BOOL result= [idNumber doubleValue] < maxDistance;
    NSLog(@"processing distance %f", [idNumber doubleValue]);
    return result;
}];
jsonCloudArray  = [[jsonCloudArray filteredArrayUsingPredicate:nearPredicate] mutableCopy];

我不再崩溃了。