path - 如何将代码 objective-c 转换为 Swift 以保存图像?

标签 path avfoundation swift nsdocumentdirectory

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

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

// Save image.
[UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES];

我正在尝试转换为 swift 以保存使用 avfoundatioin 拍摄的照片,但我不知道在此处键入 NSDocumentDirectory 和 NSUserDomainMask 如何转换这个??

谢谢!!

最佳答案

如下:

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)
        }
    }
}

"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 {
    // ...
}

.stringByAppendingPathComponent 也被弃用的事实在 this answer 中处理。 ...

关于path - 如何将代码 objective-c 转换为 Swift 以保存图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24301424/

相关文章:

swift - 数级 swift

ios - 单击按钮展开表格 View 单元格

path - 在 MSYS 下使用 Command 在 Windows 上调用 shell 脚本

templates - SingleThreaderDialog.Exception.NoValidMappingDetailsFound

javascript - 如何通过删除变换属性来重新创建 svg 路径?

swift - 使用 Swift 从视频中抓取帧

ios - 使用AVAssetReader按时间值获取特定帧

java - Java Eclipse 中未找到源错误

objective-c - CoreAnimation、AVFoundation 和导出视频的能力

ios - 如何快速获取collectionview的flowlayout?