Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 预测与过滤_Ios_Nsmutablearray_Nspredicate - Fatal编程技术网

Ios 预测与过滤

Ios 预测与过滤,ios,nsmutablearray,nspredicate,Ios,Nsmutablearray,Nspredicate,我有一个名为comboData的NSMutableArray,我正试图过滤掉它: NSMutableArray * filteredVersion = [[NSMutableArray alloc] init]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id >= %d AND id <= %d",1,7]; [filteredVersion setArray: [comb

我有一个名为comboData的
NSMutableArray
,我正试图过滤掉它:

  NSMutableArray * filteredVersion = [[NSMutableArray alloc] init];
  NSPredicate    *predicate        = [NSPredicate predicateWithFormat:@"id >= %d AND id <= %d",1,7];
  [filteredVersion setArray: [comboData filteredArrayUsingPredicate:
                          predicate]
                        ];
在第二行。 我(重新)错过了什么

[编辑]

comboData如下所示(在调试区域打印)


好的,那么您的数组
comboData
中填充了
nsdictionary

NSDictionary
只能包含对象

它看起来像键
id
引用了一个数字,因此它将是一个
NSNumber

在谓词中,您将其视为int

你需要这样的东西

// erm... not sure. Can you not just use a comparator?
// NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id >= %d AND id <= %d",1,7];

NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(NSDictionary *dictionary, NSDictionary *bindings) {
    NSNumber *idNumber = dictionary[@"id"];

    return [idNumber intValue] >= 1 && [idNumber intValue] <= 7;
}];
//呃。。。不确定。你能不能不用比较仪?

//NSPredicate*谓词=[NSPredicate谓词格式:@"id>=%d和id请添加一个异常断点以查找崩溃的行。这是我调用setArray时的最后一个断点…请您显示setArray函数的代码。这是NSMytableArray.hComboData数组中包含的标准iOS方法。太好了!这是最简单的解决方案吗?我想是的。我不认为
predicateWithFormat
对于处理对象非常强大。但不是100%确定。不幸的是,我在执行代码时遇到匿名崩溃:这是我的实现:double maxDistance=0.0003;NSPredicate*nearPredicate=[NSPredicate predicateWithBlock:^BOOL(NSDictionary*dictionary,NSDictionary*绑定){NSNumber*idNumber=dictionary[@“Distance”];返回[idNumber doubleValue]combo data ( { id = 1; label = "A"; name = ''; }, { id = 2; label = "B"; name = ''; },
// erm... not sure. Can you not just use a comparator?
// NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id >= %d AND id <= %d",1,7];

NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(NSDictionary *dictionary, NSDictionary *bindings) {
    NSNumber *idNumber = dictionary[@"id"];

    return [idNumber intValue] >= 1 && [idNumber intValue] <= 7;
}];