簡體   English   中英

僅將部分對象保存在核心數據中

[英]Save only part of objects in Core Data

問題:我正在實現用戶在xml中下載很多對象的應用程序。 為了減少峰值內存占用,我想將數據解析為Core Data,然后使用批處理將其顯示在表視圖中。 我不想保存它們,因為對象每天都在變化,但是我想讓用戶選擇其收藏夾對象然后保存它們。 收藏夾將顯示在其他表格視圖中。

我正在考慮的解決方案:

  1. 創建兩個NSManagedObjectContext(一個主和一個tmp)。 將對象解析為tmp(如果已將其標記為收藏夾對象復制到main並從那里保存)。
  2. 忘記內存,將數據保留在某個數組中,僅保存選擇的數組。
  3. 使用一個NSManagedObjectContext保存所有內容,然后在應用程序終止之前將unmarket作為收藏刪除。

這里的任何提示都會很好。 還有一些帶有解決方案一的代碼示例代碼,因為我是Core Data的新手,可能會遇到問題。 我一直在尋找合適的解決方案兩天了。

我建議您不要去優化內存占用,除非/直到您有確鑿的證據表明實際上需要這樣做為止。 但是,當然,這取決於“ xml中的許多對象”的確切含義。

我假設您不會下載數百萬個XML文檔,只是為了在應用程序完成時將其丟棄(因為這將嚴重浪費網絡資源)。 相反,就內存而言,具有幾百甚至幾千個類似XML的小型數據結構的數組很可能不必擔心。

話雖如此,如果您畢竟需要用Core Data保存臨時數據和持久性數據,那么我將使用具有兩個實體而不是兩個單獨的上下文的單個NSManagedObjectContext。 或者,您甚至可以擁有一個實體,並將某些實例標記為臨時數據。 管理兩個不同的上下文意味着額外的開銷,而我真的沒有看到該方法的任何優勢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM