我正在尝试使用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所看到的那样。
可能是什么问题?
答案 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];
我不再崩溃了。