2014-12-13 50 views
2

我的應用程序允許用戶從他們的照片庫中選擇一個標誌並將其保存到自己的文件目錄如下:保存和載入圖像路徑通過NSUserDefaults的

var fileName:String = "logo.png" 

     var arrayPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString 

     var pngFileName = arrayPaths.stringByAppendingPathComponent(fileName) 

     UIImagePNGRepresentation(pickedImage).writeToFile(pngFileName, atomically:true) 

     NSUserDefaults.standardUserDefaults().setObject(fileName, forKey: "pngFileName") 
     NSUserDefaults.standardUserDefaults().synchronize() 

我想接着又視圖控制器中使用的圖像但我無法弄清楚如何從用戶的默認值訪問圖像,然後在當前的視圖控制器中使用。

回答

4

您已將文件名存儲在用戶默認值中,您可以按照常規方式找到應用程序文檔目錄 - 將兩者結合起來,然後獲得您的url。有了這個,你可以顯示圖像。

let path = NSSearchPathForDirectoriesInDomains(
     .DocumentDirectory, .UserDomainMask, true)[0] as NSString 
let fileName = NSUserDefaults.standardUserDefaults() 
       .stringForKey("pngFileName") ?? defaultName 
let imagePath = path.stringByAppendingPathComponent(fileName)! 
let image = UIImage(contentsOfFile: imagePath) 

// display the image 
someImageView.image = image 
+0

當我運行你的代碼時,我得到一個錯誤NSUserDefaults沒有一個名爲'stringForKey'的成員 - 這很奇怪,因爲文檔聲明它有。 – Tom 2014-12-13 16:29:20

+0

剛剛在遊樂場進行測試:按預期工作。確保在類名後面使用'standardUserDefaults()'。我通過添加'()'來糾正這個帖子。 – Mundi 2014-12-13 16:32:08

+0

你應該真的有條件地解開從NSUserDefaults獲取文件名的結果。 – Abizern 2014-12-13 18:03:04