NSPredicate和NSString问题

时间:2011-08-14 01:44:54

标签: iphone objective-c nsstring nspredicate nsnumber

我有以下谓词适用于555和623(3位数字)等数字

问题是,我有005和009等数字(1位数,前面有两位0)。

NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"ANY code BETWEEN %@",
                                    [NSArray arrayWithObjects: 
                                     [NSExpression expressionForConstantValue: [NSNumber numberWithFloat: [self.predicateFilter floatValue]]],
                                     [NSExpression expressionForConstantValue: [NSNumber numberWithFloat: [self.predicateFilter floatValue] + .99]],
                                     nil]];

大多数情况下,predicateFilter将是一个数字为@"124"的字符串。但是当我运行像035这样的数字时(注意0开始时),我得到以下NSLog:

2011-08-13 18:32:23.989 Codes[2007:707] code 004
2011-08-13 18:32:24.018 Codes[2007:707] ANY code BETWEEN {4, 4.99}
2011-08-13 18:34:23.846 Codes[2007:707] code 083
2011-08-13 18:34:23.864 Codes[2007:707] ANY code BETWEEN {83, 83.99}

因为00X而没有找到这些数字。

有没有办法可以使用if / else或其他内容来捕获所有以000为开头的数字,以便我可以相应地编辑谓词?

编辑:

我想我只需要创建一个谓词,将code的前3位数字与NSString匹配,后者为005.那么这将给我剩下的结果005.5,005.6等。

1 个答案:

答案 0 :(得分:1)

由于代码是一个字符串,你可以做一个MATCH比较,或者是这个核心数据。如果是核心数据,您可以使用transient attribute添加属性以将代码作为Integer codeInteger 返回。