NSCompoundPredicate无法匹配

时间:2010-08-09 16:30:27

标签: iphone cocoa sqlite nspredicate

我正在使用以下代码为iPhone应用构建NSPredicate。日志记录显示预测为:位置包含“头部”和形状包含“椭圆形”和纹理包含“凹凸不平”和颜色包含“红色”

我没有结果。如果我将谓词限制为单个项目,它将起作用,超过1个失败。

谁能告诉我为什么?

非常感谢

NSMutableArray *subPredicates = [[NSMutableArray alloc] init];
for (Ditem in self.tableDataSource) {
    NSString *Title = [Ditem valueForKey:@"Title"];
    NSString *Value = [Ditem valueForKey:@"Value"];
    if([[Value lowercaseString] isEqualToString: @"all"]){
        Value = @"";
    }
    else{
        NSPredicate *p = [NSComparisonPredicate predicateWithLeftExpression:[NSExpression expressionForKeyPath:[Title lowercaseString]] rightExpression:[NSExpression expressionForConstantValue:[Value lowercaseString]] modifier:NSDirectPredicateModifier type:NSContainsPredicateOperatorType options:0];
        [subPredicates addObject:p];
    }
}
NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:subPredicates];
NSLog(@"predicate: %@", predicate);[self.fetchedResultsController.fetchRequest setPredicate:predicate];

1 个答案:

答案 0 :(得分:0)

您的谓词要求可过滤对象中的所有值都是字符串。这是对的吗?

另外,我会将您的subpredicate创建简化为:

NSPredicate * p = [NSPredicate predicateWithFormat:@"%K CONTAINS %@", [Title lowercaseString], [Value lowercaseString]];