我試圖挽救Parse.com檢索這樣的圖像檢索圖片:斯威夫特 - 節能和userDefaults
let userImageFile = object["Image"] as PFFile
userImageFile.getDataInBackgroundWithBlock {
(imageData: NSData!, error: NSError!) -> Void in
if error == nil {
image = UIImage(data:imageData)
let imageToSave:NSData = UIImagePNGRepresentation(image)
self.saveImage(intRandomNumb, retImage: imageToSave)
}
}
其中saveImage功能如下:
func saveImage(imagepath:Int, retImage:NSData){
println("image is being saved")
let defaults = NSUserDefaults.standardUserDefaults()
let imagePathName = "\(imagepath)"
defaults.setObject(retImage, forKey: imagePathName)
}
和後來,我試圖顯示這樣的圖像,像這樣:
var point = gestureRecognizer.locationInView(self.tv)
if let indexPath = self.tv.indexPathForRowAtPoint(point)
{
let data = mainList[indexPath.row] as SecondModel
let fileRef = data.fileReference
let intFileRef = Int(fileRef)
println(intFileRef)
let defaults = NSUserDefaults.standardUserDefaults()
let usedKeyName = "\(intFileRef)"
if let photo = defaults.objectForKey(usedKeyName) as? UIImage {
println("Image created")
let photo = defaults.objectForKey(usedKeyName) as UIImage
var imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
imageView.image = photo
self.view.addSubview(imageView)
}
和「圖像創建」永遠不會被打印哪意味着檢索不知何故不起作用。 我不太確定你是否能夠象我在這裏所做的那樣將圖像保存到userdefaults,但這是我能想到的最好的,並且我找不到像Swift這樣的任何以前的問題。
關於如何進行的任何建議,將不勝感激。
解決方案:問題是我試圖直接加載圖像作爲UIImage。我還必須將NSData轉換爲UIImage,這一切都發生在上面顯示的代碼的最後一部分。最後我的代碼看起來像這樣:
if let photo = defaults.objectForKey("\(intFileRef)") as? NSData {
println("Image created")
let photo = defaults.objectForKey("\(intFileRef)") as NSData
let imageToView:UIImage = UIImage(data: photo)
var imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
imageView.image = imageToView
self.view.addSubview(imageView)
}
我希望這可以幫助別人掙扎與類似的東西。
圖像以用戶默認值存儲爲NSData,並嘗試直接實例化UIImage ...也許這就是問題 – Volker
確實,這解決了問題,並且「圖像創建」被打印出來。但是,我如何將NSData轉換爲UIImage呢? @Volker – martin
http://stackoverflow.com/questions/257400/nsdata-and-uiimage應該涵蓋那 – Volker