首页 > 解决方案 > 如何在 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)

        }
    }

标签: iosswiftxcodensfilemanager

解决方案


解决方案在这里:)

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

推荐阅读