假設我正在構建一個顯示聯繫人的UITableView的應用程序。用戶的聯繫人存儲在遠程服務器上。我從服務器獲取用戶的聯繫人並將其存儲在覈心數據中。用於存儲從核心數據(iOS)獲取的數據的首選方法
我的UITableViewController加載並從Core Data中獲取NSManagedObject子類(名爲ContactVO)的數組。我使用這個ContactVOs數組來填充我的UITableView。然後,我向服務器發出一個請求,以提取用戶的最新聯繫人列表。當我從服務器獲得響應時,我從Core Data存儲中刪除所有聯繫人,然後插入從服務器數據創建的聯繫人。此時,我通知我的UITableViewController數據已更改,並通過委託方法將新聯繫人傳遞給它。
問題:只要我從Core Data中刪除聯繫人,存儲在我的UITableViewController中的聯繫人VOs的引用就是垃圾。
這裏的想法是讓桌面視圖始終允許用戶進行交互,但始終顯示可用的最新聯繫人。
事情我已經嘗試:
創建一個類(聯繫)的所有相同的屬性ContactVO和填充這個類從核心數據獲取的數據的情況下,則返回數組聯繫對象,以我的UITableViewController
創建每個ContactVO獲取一個NSDictionary,並返回字典的數組我的UITableViewController
這兩者都有一個更好的方法。存儲獲取請求結果的首選方法是什麼?
大概我對你的問題理解不好,但這聽起來很正常,只要數據源發生變化,你必須調用[yourTable reloadData],然後你全部刷新了。另外,你可以使用一個NSManagedObject數組,而不需要類似的類。或者像其他人所建議的那樣,使用NSFetchedResultsController,在這種情況下,只需記住在批量更新時設置委託= nil,然後在完成時設置委託=自己。 – Leonardo