我可以用什麼策略來解決這種情況?如何對核心數據對象進行分組,以便全部或全部被系統刪除?
我有一個視圖控制器,顯示在特定的一天發生的所有事件。
事件通過首先嚐試獲取對象填充到viewWillAppear
中。如果沒有找到對象,那麼它會使用Web服務請求那天的事件。
如果用戶想要去第二天,他們可以點擊「第二天」按鈕。像viewWillAppear
一樣,此按鈕嘗試獲取,如果未返回任何結果,則會觸及Web服務。
問題:如果用戶多次點擊「第二天」,然後返回到第一天,那麼獲取將不會返回任何對象,或者更糟糕的是,它只會返回當天的一些對象。
這給用戶的印象是,他們正在查看當天事件的完整列表,實際上它只是部分事件。
我的理論是對可以創建的核心數據對象的可用內存空間存在某種限制,因此它會取消分配較舊的內存空間。這可能嗎?
如何編寫我的事件視圖控制器,以便iOS可以刪除特定日期的所有對象或保留當天的所有對象並刪除另一天?
這聽起來更像是你的代碼中有一些邏輯錯誤。您可能想要發佈您用於獲取和顯示數據的代碼。如果您使用正確的委託方法使用NSFetchedResultsController和UITableView,則應始終查看正確的數據。點擊「Next Day」應該簡單地在你的fetchedResultsController查詢中應用一個過濾器來返回那一天的數據子集,或者如果沒有可以調用後臺任務來加載數據的話。 –
你的理論不正確。核心數據永遠不會釋放對象。最糟糕的情況是這些物體會變成缺陷。如果你下一次從你的代碼中訪問它們,它們將被轉回到非故障對象。這會自動發生。 –