我有一個20000條記錄的預加載數據庫。使用NSFetchedResultsController搜索每個字符CoreData是非常緩慢的大量記錄
基本上有兩個實體進行搜索,City Entity
和另一個是street Entity
。市有「名稱」屬性和Street Entity
也有名稱屬性,city and street
都在one-to-many relationship
。一個城市可以有很多街道。
現在,當用戶可以搜索任何字符,如「a或b」任何東西,它應該顯示用戶相應的城市和/或街道.Eveytime我必須重新加載和重新配置NSFetchedResultsController。
我實施了NSPredicate
來過濾記錄。
let predicate = NSPredicate(format:"(name CONTAINS[c] %@) OR (SELF.streets.name CONTAINS[c] %@)",text,text)
predicateArray.append(predicate)
這個謂詞用於過濾的records.I'm也使用MagicalRecord在coreData.The的包裝搜索曾經是很爲我在尋找每一個字符。
任何幫助將非常感激。
爲什麼你的搜索中包含的,而不是開頭?爲什麼允許用單個字母搜索?你在後臺線程上運行搜索嗎?如果用戶繼續輸入,是否添加了邏輯以防止搜索運行?看起來你正在創造一些東西,擔心大多數人不會有的問題...... – Wain
我有使用包含關鍵字和單字母搜索的要求。 – user1068810