如何在核心数据SWIFT上保存图像

时间:2017-09-25 19:06:19

标签: ios swift core-data

我想知道如何保存我从coredata上的照片的bilbotrop中获得的图像。

我有一个imageView,当我触摸它时,我可以从库中选择一张照片我的问题是当我关闭应用程序并重新打开图像时不存在。

如何保存图像,当应用重新打开图像时,图像视图中的图像继续

coredata是最好的选择吗?

class V1Menino: UIViewController, UITextFieldDelegate, GADBannerViewDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate,UIScrollViewDelegate {

@IBOutlet weak var sViewV1: UIScrollView!
@IBOutlet weak var imageV1: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.layoutIfNeeded()

    self.sViewV1.minimumZoomScale = 1.0
    self.sViewV1.maximumZoomScale = 6.0

    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:)))
    imageV1.isUserInteractionEnabled = true
    imageV1.addGestureRecognizer(tapGestureRecognizer)

}

func viewForZooming(in scrollView: UIScrollView) -> UIView? {
    return self.imageV1
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]){


    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage
    {
        imageV1.image = image
    }
    self.dismiss(animated: true, completion: nil)
}

@objc func imageTapped(tapGestureRecognizer: UITapGestureRecognizer)
{
    //let tappedImage = tapGestureRecognizer.view as! UIImageView
    // sua acao
    let image = UIImagePickerController()
    image.delegate = self
    image.sourceType = UIImagePickerControllerSourceType.photoLibrary
    self.present(image,animated: true)
    {
        //depois disso ta completo
    }
}
}

2 个答案:

答案 0 :(得分:0)

不,核心数据不是您的最佳选择。在处理关系方案时,核心数据非常有用 无论如何,直接在核心数据中保存图像(即使可能)也不是最好的方法。通常,您可以在本地保存映像,并在核心数据持久存储中保留其路径。
要做你想做的就足以在文档目录中创建一个目录并在那里保存图像的副本。
打开应用程序后,只需使用此路径中的数据构建UIImage实例。

答案 1 :(得分:0)

我不会将CoreData用于图像数据。那应该存储在Documents目录中的某个地方

您可以使用UIImageJPEGRepresentationData获取UIImage,然后将其保存为write(to:options:)

您可以使用:How to find NSDocumentDirectory in swift?

获取Documents目录

我不知道你的应用程序有多复杂。如果您只需要存储这一个图像,那么在Documents目录下创建一个子文件夹并使用一个常量文件名。

如果您需要存储一堆图像(并跟踪它们),那么您可以使用CoreData来存储文件名(而不是图像数据)。

本教程的功能与您想要的一样(但使用PNG):https://www.hackingwithswift.com/example-code/media/how-to-save-a-uiimage-to-a-file-using-uiimagepngrepresentation