2017-04-05 190 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)