程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> ios-如何創建一個or和and雙語句

ios-如何創建一個or和and雙語句

編輯:編程綜合問答
如何創建一個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];

最佳回答:


這應該可以解決

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

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

NSPredicate *finalPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:
                                     @[compoundPredicate, markPredicate]];
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved