如何在 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 文件夹?