我正在尝试像这样保存从 Parse.com 检索到的图像:
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)
}
我希望这可以帮助其他遇到类似问题的人。
最佳答案
swift 3
嘿,在这里试试这个漂亮的代码:
将您的 UIImage 转换为
Data
。PNG:
yourDataImagePNG = UIImagePNGRepresentation(yourUIImageHere)
JPEG 格式:
yourDataImageJPG = UIImage(data: yourUIImageHere,scale:1.0)
- 保存在 UserDefaults 中。
UserDefaults().set(yourDataImagePNG, forKey: "image")
- 恢复自:
UserDefaults.standard.object(forKey: "image") as! Data
希望能帮到你!
关于xcode - Swift - 从 userDefaults 保存和检索图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27858250/