2017-04-05 202 views
0

我要搜索的酒店实体关键字两个属性(hotelName &的cityName)在多核心数据NSPredicate搜索属性列

我在找酒店enter image description here

肯辛顿工作室”是在hotelName属性

伦敦” 是的cityName属性

在搜索栏中,如果我输入hotelName和cityName的中间(就像下面),它应该识别并显示结果。 enter image description here

实现这一目标,我做喜欢

let charSet = CharacterSet(charactersIn: " ") 
let words = searchText.components(separatedBy: charSet) 
let predicate = NSPredicate(format: "(hotelName IN %@) OR (cityName IN %@)", words, words) 

但它给空的结果。

请指导我..

+0

它的工作原理,如果你从酒店名称,即“肯辛顿”,而不是“Kensing”键入整个单词? –

+0

查看下面的答案,Lokesh。让我知道它是否有效。 –

回答

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)