for_2012 2013-01-17 02:47 采纳率: 0%
浏览 2327
已采纳

如何创建一个or和and双语句

有下面三个类型获取,需要添加一个AND语句过滤结果,其中mark是使用状态。

1.

NSMutableArray *questionNumberArray=[[NSMutableArray alloc] init];

// Fetch questions
NSManagedObjectContext *context = self.document.managedObjectContext;
NSFetchRequest *fetchRequest =
[[NSFetchRequest alloc] initWithEntityName:@"Questions"];

//building the predicate with selected category
NSMutableArray *parr = [NSMutableArray array];

if ([cat0str length]){
    [parr addObject:[NSPredicate predicateWithFormat:@"question.category CONTAINS[c] %@",cat0str]];
}
if ([cat1str length]){
    [parr addObject:[NSPredicate predicateWithFormat:@"question.category CONTAINS[c] %@",cat1str]];
}
if ([cat2str length]){
    [parr addObject:[NSPredicate predicateWithFormat:@"question.category CONTAINS[c] %@",cat2str]];
}

NSPredicate *compoundPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:parr];

[fetchRequest setPredicate:compoundPredicate];

2.

    NSPredicate *markPredicate =[NSPredicate predicateWithFormat:@"question.mark == 1"];
}

想要实现的是:

NSPredicate *finalPredicate = [compoundPredicate && markPredicate];

[fetchRequest setPredicate:finalPredicate];
  • 写回答

1条回答 默认 最新

  • gaoXxxing 2013-01-17 03:23
    关注

    这应该可以解决

    NSPredicate *finalPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:
             [NSArray arrayWithObjects:compoundPredicate, markPredicate, nil]];
    

    或者使用“modern Objective-C”语法

    NSPredicate *finalPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:
                                         @[compoundPredicate, markPredicate]];
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿