Combining Two Conditions in NSPredicate

Simon picture Simon · Oct 24, 2015 · Viewed 14.5k times · Source

How do you combine two conditions in NSPredicate? I am using the following statement and I would like to add another condition that compares the the password with the contents of a textfield using AND:

request.predicate = NSPredicate(format: "username = %@", txtUserName.text!)

Answer

Martin R picture Martin R · Oct 24, 2015

As already said, you can use logical operators like "AND", "OR" in predicates. Details can be found in Predicate Format String Syntax in the "Predicate Programming Guide".

As an alternative, use "compound predicates":

let p1 = NSPredicate(format: "username = %@", "user")
let p2 = NSPredicate(format: "password = %@", "password")
let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [p1, p2])

This is useful for more complex expressions, or if you want to build a predicate dynamically at runtime.