有人說我們不能改變請求對象。有人說我們可以改變查詢。有人說我們不能改變謂詞。我們可以在NSFetchedRequestController中更改查詢嗎?
如果不更改謂詞,如何更改查詢?
這是一種奇怪的權利。
有人說我們不能改變請求對象。有人說我們可以改變查詢。有人說我們不能改變謂詞。我們可以在NSFetchedRequestController中更改查詢嗎?
如果不更改謂詞,如何更改查詢?
這是一種奇怪的權利。
這不是一個SQL查詢,它是提取。查詢是SQL特定的概念,而提取是可與任何類型的核心數據存儲一起使用的核心數據概念。
您可以更改NSFetchedResultsController的fetchRequest
值,但它有些涉及。 From the docs:
修改獲取請求
你不能簡單地改變讀取請求 修改的結果。如果您要更改提取請求,您必須:
(1)如果您正在使用緩存,請將其刪除(使用deleteCacheWithName :)。
通常情況下,如果您要更改提取 請求,則不應使用緩存。
(2)更改提取請求。
(3)調用performFetch :.
這是導致修改提取請求時出現問題的緩存。
您也可以更改NSFetchRequest對象的謂詞,但是如果將該提取與獲取的結果控制器一起使用,則必須執行上述步驟。
當緩存的對象與新獲取請求返回的設置不同時,會出現問題。通常,創建新的獲取請求對象或新獲取的結果控制器對象會更簡單,更簡潔。
你必須凍結tableview與beginUpdate
而所有這一切正在進行,否則tableview的行和部分將不會與導致崩潰的數據同步。