如何在 Documents 文件夹中保存 UIImagePicker 中的 UIImage 并获取路径字符串以保存在 Swift 中的 Core Data 中

Posted

技术标签:

【中文标题】如何在 Documents 文件夹中保存 UIImagePicker 中的 UIImage 并获取路径字符串以保存在 Swift 中的 Core Data 中【英文标题】:How to save UIImage from UIImagePicker in Documents folder and get string for path to save in Core Data in Swift 【发布时间】:2015-03-05 02:55:59 【问题描述】:

我正在构建我的第一个 Swift 应用程序。在其中,用户需要能够从 iPhone 的照片库中选择图像。然后我想保存此图像以永久保存以在应用程序的其他部分使用。

我知道可以将 UIImage 转换为 NSData 并在 Core Data 中另存为二进制数据,但我已经读到将二进制大对象(例如图像)直接存储在 Core Data 中是一个坏主意.

我看到它建议您将图像文件保存在 Documents 文件夹中,然后在 Core Data 中保存文件路径的字符串。但是我还没有看到执行此操作所需的代码 sn-p 的实际示例。

要完成的步骤:

    从图像选择器中获取UIImage。 (这部分我已经开始工作了) 将图像数据保存在 Documents 文件夹中 获取 Documents 文件夹的文件路径的字符串值 将此字符串保存在 Core Data 中 在应用程序的其他地方反向执行步骤 2-4 以使用存储的 图片。

这是我开始使用的 UIImagePicker 的代码:

@IBAction func openImagePicker(sender: AnyObject) 
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary)
        imagePicker.delegate = self
        imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
        imagePicker.allowsEditing = false
        self.presentViewController(imagePicker, animated: true, completion: nil)
    


func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!)

self.dismissViewControllerAnimated(true, completion: nil)
myImageView.image = image

所以myImageView.image 中显示的UIImage 是我需要做的事情。

【问题讨论】:

你需要使用Core Data吗? 是的,我想是的。表示图像文件路径的字符串将是现有核心数据实体类型的属性,它是应用程序的核心。我已经设置好 Core Data 并在应用程序中工作。核心数据部分并不是真正的问题。我真正需要的是如何将图像保存在文件夹中并获取其位置的字符串。 【参考方案1】:

您可以使用以下代码保存您的图像

    let imageData = NSData(data:UIImagePNGRepresentation(wineImage.image))
    let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
    var docs: String = paths[0] as! String
    let fullPath = docs.stringByAppendingPathComponent("yourNameImg.png")
    let result = imageData.writeToFile(responseData, atomically: true)

在 fullPath 中你会找到完整的路径,图像将存储在应用程序的文档目录中。

【讨论】:

以上是关于如何在 Documents 文件夹中保存 UIImagePicker 中的 UIImage 并获取路径字符串以保存在 Swift 中的 Core Data 中的主要内容,如果未能解决你的问题,请参考以下文章

WPF:在 Documents 文件夹中保存和读取 Json 文件

如何将 SQLite 文件从 Documents 目录保存回目标 C 中的主包?

如何访问 iPhone 应用程序的 Documents 文件夹?

无法创建保存下载文件的路径:您无权将文件“folderName”保存在“Documents”文件夹中

如何通过加密保护 Documents 目录中的数据?

如何将图片从图片库保存到应用程序的文档文件夹中