首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSCompoundPredicate不匹配

NSCompoundPredicate不匹配
EN

Stack Overflow用户
提问于 2010-08-10 00:30:27
回答 1查看 722关注 0票数 1

我正在使用下面的代码为iPhone应用程序构建一个NSPredicate。测井结果显示:位置包含“头”,形状包含“椭圆形”,纹理包含“凹凸不平”,颜色包含“红色”。

我没有得到任何结果。如果我将谓词限制在单个项上,它将会起作用,超过1个会失败。

有人能告诉我为什么吗?

非常感谢

代码语言:javascript
复制
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];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-10 00:37:19

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

另外,我会将子谓词的创建简化为:

代码语言:javascript
复制
NSPredicate * p = [NSPredicate predicateWithFormat:@"%K CONTAINS %@", [Title lowercaseString], [Value lowercaseString]];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3442104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档