我在其他帖子看到过这段代码,用于保存图片:
// 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/