我想在两个属性(hotelName& cityName)
中搜索酒店实体中的关键字" 肯辛顿工作室"在hotelName属性
"的伦敦"是cityName属性
在搜索栏中,如果我输入hotelName和cityName的中间位置(如下所示),则应识别并显示结果。
实现这一点,我就像
一样let charSet = CharacterSet(charactersIn: " ")
let words = searchText.components(separatedBy: charSet)
let predicate = NSPredicate(format: "(hotelName IN %@) OR (cityName IN %@)", words, words)
但它给出了空洞的结果。
请指导我..
答案 0 :(得分:0)
单词对象返回[String]数组。您必须使用数组的每个对象。所以代码应该像
let words = searchText.components(separatedBy: " ")
var predicateArr = [NSPredicate]()
for word in words! {
let predicate = NSPredicate(format: "(hotelName contains [c]) OR (cityName contains [c])", word, word)
predicateArr.append(predicate)
}
let compound = NSCompoundPredicate(orPredicateWithSubpredicates: predicateArr)
let output = array.filtered(using: compound)