如何在文件管理器中保存多个图像
Posted
技术标签:
【中文标题】如何在文件管理器中保存多个图像【英文标题】:How do I save multiple UIImages in FileManager 【发布时间】:2018-07-12 01:30:31 【问题描述】:我将用户设置的图像保存在 FileManager 中。然后,我必须检索这些图像并填充 UITableView。但是,如何保存多个不同的图像,然后将其全部恢复并呈现在我的 UITableView 上?
我面临的错误是,当我保存图像时,然后检索它,我只得到一个 UIImage,而不是多个不同的图像。即使我保存了另一个不同的图像,它也只是被替换而不是添加另一个图像。所以,这样做我无法填充 UITableView,因为我总是得到一个 UIImage 而不是多个保存的图像。
这是保存图片的功能
func saveImage(image: UIImage) -> Bool
let data = UIImage.pngData(image)
guard let directory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) as NSURL else
return false
do
try data()?.write(to: (directory.appendingPathComponent("fileName2.png")?.absoluteURL)!)
return true
catch
print(error.localizedDescription)
return false
这就是我保存 UIImage 的方式
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])
if let image = info[.originalImage] as? UIImage
self.imagePreview.image = image
self.namePreview.text = self.textFieldNome.text
//Saving Image
let savingImage = saveImage(image: image)
print("\(savingImage)")
self.picker.dismiss(animated: true, completion: nil)
这是检索图像的函数
func getSavedImage(named: String) -> UIImage?
if let dir = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
return UIImage(contentsOfFile: URL(fileURLWithPath: dir.absoluteString).appendingPathComponent(named).path)
return nil
ViewController:这就是我尝试检索图像的方式
override func viewDidLoad()
super.viewDidLoad()
if let image = getSavedImage(named: "fileName2.png")
print(image)
【问题讨论】:
您的问题不清楚。您的标题暗示您发布的代码存在问题。但是,您的问题的开始基本上是询问如何修改呈现的代码以处理多个图像。是哪个? 你好@rmaddy!感谢您的建议,我刚刚重新提出了我的问题 您的saveImage
函数需要一个“名称”参数,就像您的 getSaveImage
函数一样。
@rmaddy 我忘了粘贴getSaveImage函数,我刚刚更新了问题。
@rmaddy 我面临的错误是当我保存图像时,然后我检索它我只得到一个 UIImage,而不是多个不同的图像。即使我保存了另一个不同的图像,它也只是被替换而不是添加另一个图像。你找到我了吗?
【参考方案1】:
解决方案在这里:)
import Photos
let imagesArray = [UIImage]()
for image in imagesArray //multiple image array
let objImage: UIImage = image
phphotoLibrary.shared().performChanges(
PHAssetChangeRequest.creationRequestForAsset(from:
objImage)
, completionHandler: success, error in
if success
// Saved
else
// failed
)
【讨论】:
您好,这就是我保存数据的方式,对吗?如何在另一个屏幕中检索图像?以上是关于如何在文件管理器中保存多个图像的主要内容,如果未能解决你的问题,请参考以下文章
如何从基于 SwiftUI 文档的应用程序中将多个文件保存在包文件夹中?