1

我正在創建一個簡單的基於導航的應用程序使用我的iPhone的核心數據,我試圖實現一點搜索。 該應用程序是基於蘋果「基於導航的應用程序」模板。 NSFetchedResultsController獲取所有對象,它們將顯示在表格視圖中。我也已經離開加號按鈕來添加新的對象。 那麼,我已經實現了一個UISearchBar和一個UISearchDisplayController,兩者都相同。搜索使用相同的NSFetchedResultsController來過濾對象。一個NSPredicate將在UISearchDisplayController Delegate方法中設置,但似乎尚未設置謂詞,因爲fetchedResultsController不會過濾任何內容。這是我的第一個問題。 現在,如果按下搜索欄的取消按鈕,並想通過按加號按鈕插入新對象,則不會執行此操作。沒有對象將被插入,應用程序不會崩潰,它只是沒有發生。NSFetchedResultController和UISearchBar實現

我必須在一個視圖中使用兩個不同的NSFetchedResultsController嗎?如果是的話,這並不能解決爲什麼NSPredicate沒有設置的問題。 我已經感謝你的幫助。

回答

4

如果修改您的獲取請求(例如通過更改謂詞),您需要創建一個新的獲取結果控制器。
或者,您可以使用數組(使用fetched results controller的fetchedObjects屬性)來訪問您獲取的對象,並根據搜索條件過濾該數組。這還有一個好處,就是可以更多地與Apple的sample code進行表搜索(因爲它們使用數組來支持表視圖)。