保存用户选择的图像 iOS

Save which image a user selected iOS

我的应用程序中有一个配置文件选项卡。当我打开选项卡时,我看到的是正常图像。 可以 select 相机胶卷中的图像。 代码:

 func selectImage()
    {
        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary){

            imagePicker.delegate = self
            imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
            imagePicker.allowsEditing = false

            self.presentViewController(imagePicker, animated: true, completion: nil)
        }

    }

当用户 select 将图像设置为 imageView

       func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!){
            self.dismissViewControllerAnimated(true, completion: { () -> Void in

            })
            userImage.image = image

        }

我如何保存这张图片以供用户下次打开应用程序时使用? 我只发现了一个使用 NSUserDefaults 的 SO 问题,但他们说不推荐这样做。

保存文件路径更好吗?如果是这样,我该如何处理?

为了将图像保存到文件路径,请使用以下代码

let fileDirectory = NSSearchPathForDirectoriesInDomains(
    .DocumentDirectory, .UserDomainMask, true)

func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!){
        self.dismissViewControllerAnimated(true, completion: { () -> Void in

        })
        userImage.image = image
        var imageData = UIImageJPEGRepresentation(image, 1.0)
        var imageFilePath = fileDirectory[0].stringByAppendingPathComponent("userPicture.jpeg")
        var imageFileURL = NSURL(fileURLWithPath: imageFilePath)
        imageData.writeToURL(imageFileURL!, atomically: false)
}

为了从您保存的本地文件设置图像,您必须首先检查该文件是否存在,然后将其内容加载到图像视图

override func viewDidLoad() {

var imagePath = fileDirectory[0].stringByAppendingPathComponent("userPicture.jpeg")

var fileManager = NSFileManager.defaultManager()

    if (fileManager.fileExistsAtPath(imagePath)){

            userImage.image =  UIImage(contentsOfFile : imagePath)

    }
}