ios - 如何在文件管理器中保存多个图像

标签 ios swift xcode nsfilemanager

我正在将用户设置的图像保存在文件管理器中。然后,我必须检索这些图像并填充 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
        }
    })
}

关于ios - 如何在文件管理器中保存多个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51296168/

相关文章:

javascript - Firebase 注销用户所有 session

ios - 旧版 ObjC/Swift 代码库使 `swift_checkMetadataState` : how to disentangle app/test targets? 中的测试崩溃

c++ - 仅在 Xcode C++ 项目中 Release模式下的链接器错误

ios - 是否可以使用 AVAudioPlayer 和 initWithData :error: to play generated sounds?

ios - TouchID 已验证但仍显示对话框

objective-c - 从 NSMutableArray 检索 NSDictionary

ios - AVAssetReader,如何使用流而不是文件?

mysql - 在 Swift 中使用 array.append() 向数组添加值时出现问题

ios - 如何确定一个数组是否包含 Swift 中另一个数组的所有元素?

ios - 如何使用 url scheme 在适用于 iOS 的 facebook messenger 上仅共享文本