花費數小時後,我發現無法在以下文章中由SQLite支持的NSFetchedResultsController中進行自定義排序。NSFetchedResultsController中的自定義排序
NSFetchedResultsController custom sort not getting called
但是,我找不到我的問題的實際解決方案。
這是我正在做的。
背景:
我有一個英文詞典數據庫(詞只是一個簡單的列表 - 非常大)在CoreData。單詞使用NSFetchedResultsController顯示在UITableView中。
UITableView有一個關聯的搜索欄。當用戶在搜索欄中輸入字符串時,UITableView將顯示已過濾的單詞列表。
爲什麼我需要自定義的排序:
當用戶輸入一個字符串,讓我們說這是bre
,我將其更改爲正則表達式,b.*r.*e.*
,並把它作爲一個NSPredicate,然後,做performFetch。因此,在表格視圖中將顯示「裸露」和「中斷」等所有單詞。
默認情況下,單詞顯示爲字母順序。因此,bare
將在break
之前。
我想要break
在搜索列表中的bare
之前,因爲break
的前三個字符與用戶輸入的內容完全匹配。
可能的想法:
- 複製NSFetchedResultsController到的NSArray的結果,並做自定義排序。 我不確定NSArray能夠像英文字典這樣的大型數組有多快。
- 嘗試performFetch多次。例如上面,嘗試按順序執行
bre.*
,br.+e.*
,b.+r.+e.*
並將它們合併。
這兩個想法看起來不太整齊。
我很感激,如果你能建議任何已知的整潔的&這種問題的典型解決方案。