Is there a writeToFile equivalent for Swift 3's 'Data' type?

£可爱£侵袭症+ 提交于 2019-11-27 11:29:25

问题


I've some code which returns the new iOS 10 / Swift 3 NSData replacement(?) type: Data

if let jpegData = UIImageJPEGRepresentation(newImage, 0.8) { ... }

I want to write this image to disk, however NSData's writeToFile: method is not present for this class. It does have a writeToURL: method, but that doesn't seem to work with a file path (and appending component).

Can anyone clarify how I would now do this, as used to be the case in Swift 2:

jpegData.writeToFile(imagePath, atomically: true) 

Thanks!


回答1:


Use write(to: fileURL).

For example:

let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("test.jpg")

do {
    try jpegData.write(to: fileURL, options: .atomic)
} catch {
    print(error)
}

Or, if you really are stuck with a path, convert that to a URL:

do {
    try data.write(to: URL(fileURLWithPath: path), options: .atomic)
} catch {
    print(error)
}

But, generally, it's preferable to use URL references throughout your code nowadays, retiring the use of path strings.



来源:https://stackoverflow.com/questions/38365675/is-there-a-writetofile-equivalent-for-swift-3s-data-type

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!