With Swift 3, according to your needs, you may choose one of 5 the following patterns in order to solve your problem.
#1. Using NSPredicate init(format:arguments:) initializer with NSDate instance
NSPredicate has an initializer called init(format:arguments:) that has the following declaration:
init(format predicateFormat: String, arguments argList: CVaListPointer)
Creates and returns a new predicate by substituting the values in an argument list into a format string and parsing the result.
When used with NSDate, you can set an instance of NSPredicate by using init(format:arguments:) as indicated below:
let date = NSDate()
let predicate = NSPredicate(format: "date > %@", date)
#2. Using NSPredicate init(format:argumentArray:) initializer with NSDate instance
NSPredicate has an initializer called init(format:argumentArray:) that has the following declaration:
init(format predicateFormat: String, argumentArray arguments: [Any]?)
Creates and returns a new predicate by substituting the values in a given array into a format string and parsing the result.
When used with NSDate, you can set an instance of NSPredicate by using init(format:argumentArray:) as indicated below:
let date = NSDate()
let predicate = NSPredicate(format: "date > %@", argumentArray: [date])
#3. Using NSPredicate init(format:arguments:) initializer with Date instance casted to NSDate
When used with Date, you can set an instance of NSPredicate by casting your Date instance to NSDate as indicated below:
let date = Date()
let predicate = NSPredicate(format: "date > %@", date as NSDate)
#4. Using NSPredicate init(format:arguments:) initializer with Date instance casted to CVarArg
When used with Date, you can set an instance of NSPredicate by casting your Date instance to CVarArg as indicated below:
let date = Date()
let predicate = NSPredicate(format: "date > %@", date as CVarArg)
When used with Date, you can set an instance of NSPredicate by using init(format:argumentArray:) as indicated below:
let date = Date()
let predicate = NSPredicate(format: "date > %@", argumentArray: [date])