如何将代码目标c转换为Swift以保存图像?

use*_*888 10 path avfoundation nsdocumentdirectory swift

我在其他帖子中看到过这段代码,用于保存图片:

  // Create path.
 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,      NSUserDomainMask, YES);
 NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Image.png"];

// Save image.
[UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES];
Run Code Online (Sandbox Code Playgroud)

我正在尝试转换为swift以保存带有avfoundatioin的图片但我不知道类型NSDocumentDirectory和NSUserDomainMask这里如何转换这个?

谢谢!!

Gri*_*mxn 19

如下:

let nsDocumentDirectory = NSSearchPathDirectory.DocumentDirectory
let nsUserDomainMask = NSSearchPathDomainMask.UserDomainMask
if let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true) {
    if paths.count > 0 {
        if let dirPath = paths[0] as? String {
            let readPath = dirPath.stringByAppendingPathComponent("Image.png")
            let image = UIImage(named: readPath)
            let writePath = dirPath.stringByAppendingPathComponent("Image2.png") 
            UIImagePNGRepresentation(image).writeToFile(writePath, atomically: true)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

"paths"是一个AnyObject [],因此您必须检查其元素是否可以转换为String.

当然,您实际上不会使用"NSDocumentDirectory"作为名称,我只是为了清晰起见.

更新Xcode 7.2

NSSearchPathForDirectoriesInDomains现在返回[String]而不是[AnyObject]?使用

let nsDocumentDirectory = NSSearchPathDirectory.DocumentDirectory
let nsUserDomainMask = NSSearchPathDomainMask.UserDomainMask
let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
if let dirPath = paths.first {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这个答案.stringByAppendingPathComponent也讨论了这个也被弃用的事实......