如何在swift 3.0中将图像写入路径

时间:2016-09-20 02:03:17

标签: ios swift core-data

我正在使用核心数据将网址存储到从图片选择器中获取的图片。

到目前为止,我有以下内容:

    let tempImage = info[UIImagePickerControllerOriginalImage] as? UIImage

    let image = UIImageJPEGRepresentation(tempImage!, 0.2)

    let path = try! FileManager.default.url(for: FileManager.SearchPathDirectory.documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask, appropriateFor: nil, create: false)
    let imageName = UUID().uuidString + ".jpg"

    let aPath = path.path

    let imagePath = (aPath as NSString).appendingPathComponent(imageName)

现在结果是我有一个路径作为字符串来保存核心数据。 但是如何将图像写入路径? 我试图使用:

   let result = image!.writeToFile(path, atomically: true)

但是我得到一个错误,说类型数据的值没有成员writeToFile。还有另一种方法可以在swift 3.0中完成吗?

感谢您的帮助。

3 个答案:

答案 0 :(得分:16)

在Swift 3中,UIImageJPEGRepresentation创建Data而不是NSData。您可以使用write代替writeToFile

你应该可以使用:

image.write(to: URL(fileURLWithPath: path), options: .atomic)

并将您的图片数据image写入path的文件。请注意,它使用URL而不是字符串文件路径,并且options参数已更改。

答案 1 :(得分:4)

在Dylansturg的帮助下,

我能够重写我的代码才能工作。以下是未来参考的代码:

do {
   let result = try image?.write(to: path, options: .atomic)
} catch let error { 
    print(error) 
}

答案 2 :(得分:0)

也许您可以尝试将UIImage对象转换为NSData对象,然后按照此链接将NSData对象写入路径:

https://developer.apple.com/reference/foundation/nsdata/1408033-writetofile?language=objc