我們應該使用核心數據存儲圖像嗎?這被認爲是一種好的做法嗎?我認爲它可能會有更少的內存足跡,因爲核心數據會在對象被實際訪問之前將對象故障。將圖像存儲在覈心數據中
回答
這並不理想。
人們這樣做(包括我)。我使用數據轉換器,效果很好。
一個選項是存儲文件名。
即將發佈的CoreData版本將會有更好的選擇。
根據其實蘋果的文檔,你應該使用取決於文件大小核心數據:看核心數據編程指南本章內容:
大型數據對象(BLOB) 如果應用程序使用大的BLOB(「二進制大對象「如圖像和聲音數據),則需要注意將開銷降至最低。 「小」,「適度」和「大」的確切定義是流暢的,取決於應用程序的用法。一個寬鬆的經驗法則是,大小爲千字節大小的對象大小適中,大小大小爲兆字節大小。一些開發人員在數據庫中使用10MB BLOB獲得了良好的性能。另一方面,如果應用程序在表中有數百萬行,則甚至128個字節可能是「適度」大小的CLOB(字符大對象),需要將其標準化爲單獨的表。
一般來說,如果您需要將BLOB存儲在持久性存儲中,則應使用SQLite存儲。 XML和二進制存儲需要整個對象圖駐留在內存中,並且存儲寫入是原子的(請參閱「持久存儲特性」(第130頁)),這意味着它們無法有效處理大型數據對象。 SQLite可以擴展以處理超大型數據庫。正確使用時,SQLite爲數據庫提供高達100GB的高性能,單行可以容納1GB(儘管無論存儲庫有多高效,讀1GB數據到內存中都是昂貴的操作)。
BLOB通常表示實體的屬性 - 例如,照片可能是Employee實體的屬性。對於小到中等大小的BLOB(和CLOB),應該爲數據創建一個單獨的實體,並創建一對一的關係來代替該屬性。例如,您可以使用它們之間的一對一關係創建員工和照片實體,從員工到照片的關係將替換員工的照片屬性。此模式最大限度地提高了對象錯誤的好處(請參閱「錯誤和取消定義」(第109頁))。只有在實際需要的情況下(如果關係被遍歷),才能檢索任何給定的照片。
但是,如果您能夠將BLOBs作爲資源存儲在文件系統中並維護對這些資源的鏈接(如URL或路徑),則更好。然後您可以根據需要加載BLOB。
乾杯。
- 1. 將圖像存儲在覈心數據中或作爲文件?
- 2. 核心數據,將圖像存儲在字典中
- 3. 將核心數據存儲在NSOperation中
- 4. 將圖像保存到核心數據?
- 5. 將圖像保存爲核心數據
- 6. iOS:在覈心數據中存儲縮略圖圖像
- 7. 將UITextView存儲到核心數據中
- 8. 在文件系統與核心數據中存儲圖像
- 9. 如何將圖像從collectionviewcell存儲到核心數據
- 10. 核心數據:刪除存儲在覈心數據中的視圖
- 11. 在覈心數據中存儲UUID
- 12. 在覈心數據中存儲NSDate(swift)
- 13. 在覈心數據中存儲MKRoute
- 14. 在覈心數據中存儲ABRecordRef
- 15. 在覈心數據中存儲NSInteger
- 16. 存儲NSAttributedString核心數據
- 17. 如何在iphone中使用核心數據將圖像存儲到sqlite?
- 18. Xcode-將數據存儲在覈心數據或SQLite中?
- 19. 將XML數據存儲在覈心數據中
- 20. 保存圖像到核心數據
- 21. 核心數據和圖像緩存
- 22. UITableViewCell圖像+保存到核心數據
- 23. 問題保存圖像核心數據
- 24. 在覈心數據中存儲圖像,我如何清除緩存?
- 25. 將JSON數據轉換並存儲到iOS核心數據中
- 26. 將圖像存儲在數據庫中
- 27. 如何將Twitter ID存儲在覈心數據對象中
- 28. 在覈心數據中將NSNumber *的NSArray存儲爲NSString
- 29. RestKit將對象存儲在覈心數據中
- 30. 將CGPoint高效存儲在覈心數據中
如果將圖像存儲到核心數據中,則會使數據庫變得沉重。我猜如果你把圖像的內存和文件路徑中的某些獨特名稱存入數據庫,它可能會很好。但我認爲這可能會很棘手。 – Exploring