I figured this out. I had to create a date from the search string to use in the predicate>>>
Here is the working code:
@objc func invoiceSearch(sender:NSSearchField) {
let searchString = sender.stringValue
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYYMMdd"
var dateTemplate: String = "20000101"
var dateSearch: String = ""
var dateEndSearch: String = ""
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
var predicate:NSPredicate = NSPredicate()
if searchString.isEmpty {
invoices = self.backUpInvoices
}
else{ // search field contains data
if searchString.isContainsLetters == false { // If false must be a date search (Numerics or -)
dateSearch = dateTemplate // Code to handle a begin and end date in
if searchString.count < 9 { // the format YYYYMMDD-YYYYMMDD initially end date is
dateSearch.removeFirst(searchString.count) // set to current date
dateSearch = searchString + dateSearch
searchBeginDate = dateFormatter.date(from: dateSearch)!
}
else {
if searchString.count > 9 {
dateSearch.removeFirst(searchString.count-9)
dateEndSearch = searchString
dateEndSearch.removeFirst(9)
dateSearch = dateEndSearch + dateSearch
searchEndDate = dateFormatter.date(from: dateSearch)!
}
}
}
if (invoiceSearchField.cell as? NSSearchFieldCell)?.placeholderString == "All" {
predicate = NSPredicate(format: "invoiceNumber contains %@ OR invoiceCustName contains %@ OR invoiceStatus contains %@ OR invoiceDateCreated >= %@ AND invoiceDateCreated < %@",searchString,searchString,searchString,searchBeginDate as NSDate, searchEndDate as NSDate)
}
else if (invoiceSearchField.cell as? NSSearchFieldCell)?.placeholderString == "invoice Number" {
predicate = NSPredicate(format: "invoiceNumber contains %@",searchString)
}
else if (invoiceSearchField.cell as? NSSearchFieldCell)?.placeholderString == "invoice Customer"{
predicate = NSPredicate(format: "invoiceCustName contains %@",searchString)
}
else if (invoiceSearchField.cell as? NSSearchFieldCell)?.placeholderString == "invoice Status"{
predicate = NSPredicate(format: "invoiceStatus contains %@",searchString)
}
else if (invoiceSearchField.cell as? NSSearchFieldCell)?.placeholderString == "Invoice Date"{
predicate = NSPredicate(format: "invoiceDateCreated >= %@ AND invoiceDateCreated < %@", searchBeginDate as NSDate, searchEndDate as NSDate)
}
invoices = (self.backUpInvoices as NSArray).filtered(using: predicate) as! [Invoice]
}