NSFileManager在创建文件时失败
这里是我的功能来保存图像。NSFileManager在创建文件时失败
static func getDirectoryPath() -> String {
let path = (NSSearchPathForDirectoriesInDomains(.picturesDirectory, .userDomainMask, true))[0]
return path
}
static func savePhoto(with path: String, image: UIImage) {
let fM = FileManager.default
let path = getDirectoryPath() + path
let data = UIImageJPEGRepresentation(image, 0.5)
let success = fM.createFile(atPath: path, contents: data, attributes: nil)
print("File creation was \(success)")
}
,然后我每次调用它像这样
let path = "/SpotCheck_\(spot.name)_Photo\(indx).jpg"
PhotoManager.savePhoto(with: path, image: photo)
当我打电话创建文件返回false,照片不会被保存。
编辑:问题是需要成为documentDirectory而不是picturesDirectory的第二行。如下图所示:
let path = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true))[0]
iOS应用程序在沙箱中运行。您无法写入图片文件夹。
如果你想添加一个图片到用户的照片库,然后使用PHPhotoLibrary
或只是UIImageWriteToSavedPhotosAlbum
。
如果您只是想将图像保存在您自己的应用程序中,然后将文件存储在文档文件夹中。
仅供参考 - 使用iOS的NSSearchPathForDirectoriesInDomains
时,唯一有用的目录是:
- libraryDirectory
- documentDirectory
- cachesDirectory
- applicationSupportDirectory
所有的人都只能在有用苹果系统。
我可以将图像写入iOS上的文档目录吗?我想在我的应用程序中保留照片,但不会将它们保存到用户照片库中。 – LoganHenderson
完全不同。是的,Documents文件夹是每个应用程序沙箱的一部分,这是应用程序编写数据的正常位置。我已经为此更新了我的答案。 – rmaddy
这是iOS还是macOS?为什么使用'FileManager'而不是'Data write'方法? – rmaddy
你检查过你的沙箱配置吗? – Bob
这是针对iOS的,我不确定使用哪种方法(文件管理器或写入)。我可以尝试查看写入方法是否可以做我想做的事,但是你有什么想法为什么文件管理器不起作用?也有理由使用一种方法而不是另一种。 – LoganHenderson