問題是因爲*%@*
這裏%@
的*
之間不是由字符串參數代替,從而NSPredicate
是不是能夠讓您的查詢LIKE *apple*
和LIKE *macbook*
你需要做的是做什麼帶有通配符和Like的搜索字符串只需使用%@
,同樣@Vadian建議使用數字而不是Bool
。
let searchkeyword1 = "apple"
let searchkeyword2 = "macbook"
//Make search string wildcards charaters
let searchString1 = "*\(searchkeyword1)*"
let searchString2 = "*\(searchkeyword2)*"
fetchRequest.predicate = NSPredicate(format: "rec_name LIKE[cd] %@ AND rec_name LIKE[cd] %@ AND isActive = %@", searchString1,searchString2, true as NSNumber)
而且連擊選項這裏是你可以使用CONTAINS
並沒有必要使用通配符。
fetchRequest.predicate = NSPredicate(format: "rec_name CONTAINS[cd] %@ AND rec_name CONTAINS[cd] %@ AND isActive = %@", "apple","macbook", true as NSNumber)
你可以做一件事,如果你想找到的所有記錄開始與蘋果和用的MacBook結束,那麼你可以簡單地使用BEGINSWITH
和ENDSWITH
fetchRequest.predicate = NSPredicate(format: "rec_name BEGINSWITH[cd] %@ AND rec_name ENDSWITH[cd] %@ AND isActive = %@", "apple","macbook", true as NSNumber)
一個佔位符的'Bool'是' %d'或'%ld'而不是'%@' – vadian
@vadian,感謝您的幫助,但仍然無法正常工作! – nirav
試試這個:let predicate = NSPredicate(format:「rec_name LIKE [cd] *%@ * AND rec_name LIKE [cd] *%@ * AND isActive =%@」,「apple」,「macbook」,NSNumber(booleanLiteral: true)) – KKRocks