2015-01-12 138 views
0

所以我有這種情況與圖像。在其中一個應用程序階段,我從他的照片庫中獲取所有用戶照片。我把他們當作ALAsset's。我讓他選擇他想要的照片。然後,我將他選擇的照片保存到應用程序目錄中,並將其作爲包含HIGH_前綴的全尺寸照片和帶有LOW_前綴的照片的縮略圖。我需要這個,因爲照片有一些屬性,比如時間等。我將這些屬性保存到SQL數據庫,其中的照片名稱字段以HIGH_或LOW_開頭。當我需要獲取照片時,我從數據庫獲取屬性,然後執行[UIImage imageWithContentsOfFile:photoPath]。有人能告訴我如何更有效地做到這一點,因爲寫這樣的照片需要一些時間。而在iPhone 4上,我有時甚至會得到內存警告。另一個問題是,我應該如何保存從網上抓取的照片?從網絡保存用戶的照片和照片

回答

0

我認錯,而不是使用核心數據,蘋果寫道,

這是更好的,但是,如果你能BLOB的存儲爲文件系統上的資源,並保持鏈接(如URL或路徑)到這些資源。然後您可以根據需要加載BLOB。

所以你是正確的做,但也許你應該檢查可轉換。只要確保你從內存中刪除不使用的圖像,如果你得到警告

從技術文檔:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreData/Articles/cdPerformance.html 下部分「大數據對象(BLOB)的」

的另一種方法可轉化做: Which way to store data(image)? NSData, String or Transformable

事實上,也許transformables是核心數據至少: How should I store UIImages within my Core Data database?

+0

我知道核心數據的基礎知識,但我加入項目女巫使用SQLite的建設也許日已有。這是否是另一種方式呢?也許我現在做的一些優化? – CarlHere

+0

如果你的數據庫只保存一個文件位置,那麼它看起來像你做對了。內存警告只是意味着你一次將太多的圖像加載到內存中,你應該儘量少地將它們保存在內存中以解決該問題 – Alex

+0

將二進制數據保存到數據庫怎麼辦?那會更有效率嗎? – CarlHere