对于Swift 3的"数据"类型,是否存在writeToFile等价物?

Kyl*_*len 39 nsdata swift swift3 ios10 xcode8

我有一些代码返回新的iOS 10/Swift 3 NSData替换(?)类型:数据

if let jpegData = UIImageJPEGRepresentation(newImage, 0.8) { ... }
Run Code Online (Sandbox Code Playgroud)

我想将此映像写入磁盘,但writeToFile:此类不存在NSData的方法.它确实有一个writeToURL:方法,但似乎不适用于文件路径(和附加组件).

任何人都可以澄清我现在将如何做到这一点,就像Swift 2中的情况一样:

jpegData.writeToFile(imagePath, atomically: true) 
Run Code Online (Sandbox Code Playgroud)

谢谢!

Rob*_*Rob 83

使用write(to: fileURL).

例如:

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)
}
Run Code Online (Sandbox Code Playgroud)

或者,如果你真的被困在一个path,将其转换为URL:

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

但是,通常,现在最好在URL整个代码中使用引用,从而停止使用路径字符串.

  • Apple似乎正在转向基于URL的文件API,并且弃用(?)基于路径(String)的API. (2认同)