The %@ placeholder in formatted format strings for Objective-C objects, so you need to wrap the integer in NSNumber :
fetchRequest.predicate = NSPredicate(format: "level = %@", NSNumber(integer: level))
or use ld instead to format the (long) integer:
fetchRequest.predicate = NSPredicate(format: "level = %ld", level)
We also note that
fetchRequest.predicate = NSPredicate(format: ...) fetchRequest.predicate = NSPredicate(format: ...)
does not create a complex predicate; a simple assignment simply overwrites the first. You can use NSCompoundPredicate :
let p1 = NSPredicate(format: "level = %ld", level)! let p2 = NSPredicate(format: "section = %ld", section)! fetchRequest.predicate = NSCompoundPredicate.andPredicateWithSubpredicates([p1, p2])
or just combine predicates with AND:
fetchRequest.predicate = NSPredicate(format: "level = %ld AND section = %ld", level, section)
Martin r
source share