您可以使用NSCompoundPredicate您或&和操作是這樣的。
對象 - - OR
// OR Condition //
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"X == 1"];
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"X == 2"];
NSPredicate *predicate = [NSCompoundPredicate orPredicateWithSubpredicates:@[predicate1, predicate2]];
對象 - - 和
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"X == 1"];
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"X == 2"];
NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[predicate1, predicate2]];
斯威夫特 - OR
let predicate1:NSPredicate = NSPredicate(format: "X == 1")
let predicate2:NSPredicate = NSPredicate(format: "Y == 2")
let predicate:NSPredicate = NSCompoundPredicate(orPredicateWithSubpredicates: [predicate1,predicate2])
斯威夫特 - 和
let predicate1:NSPredicate = NSPredicate(format: "X == 1")
let predicate2:NSPredicate = NSPredicate(format: "Y == 2")
let predicate:NSPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate1,predicate2])
斯威夫特3 - 或
let predicate1 = NSPredicate(format: "X == 1")
let predicate2 = NSPredicate(format: "Y == 2")
let predicateCompound = NSCompoundPredicate.init(type: .or, subpredicates: [predicate1,predicate2])
斯威夫特3 - 和
let predicate1 = NSPredicate(format: "X == 1")
let predicate2 = NSPredicate(format: "Y == 2")
let predicateCompound = NSCompoundPredicate.init(type: .and, subpredicates: [predicate1,predicate2])
謝謝,但那些所有3個較長。即使閱讀起來很困難,我也沒有使用簡寫的問題。我一直在尋找一個短小的解決方案,並且不需要在那裏搜索「searchString」3次(如果可能的話)! – mjisrawi
@mjisrawi增加了另一個* *可能會起作用的選項。 –
不,解析器似乎並不瞭解位置說明符。 :(順便說一句,我發現這個問題的重複:http://stackoverflow.com/questions/6305940/shorter-way-to-write-nspredicate-format-string-for-testing-multiple-properties那裏有類似的答案。 – mjisrawi