ios - 如何在 FileManager 中保存多个 UIImages
问题描述
我将用户设置的图像保存在 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)
}
}
解决方案
解决方案在这里:)
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
}
})
}
推荐阅读
- java - WildFly 13 数据源 getConnection(用户,密码)不起作用
- python - 在 Django 查询集中使用时间戳进行分组
- powerbi - 我怎样才能得到正确的不同值的总数?
- c# - 为什么collection1 和collection2 有相同的值?
- c# - 在C中查找活动用户目录的路径
- c# - 我如何知道我的应用程序是从 C# 中的控制台还是窗口打开的
- c# - Xamarin - Device.BeginInvokeOnMainThread 中的函数未正确调用
- node.js - PM2/NodeJS API 与 mongoDB 索引问题
- android - Ubuntu 16.04 adb 设备列表为空
- html - odoo 10 QWEB 报告如何传递解析器中方法中使用的值?