Ios 将UIImage另存为用户默认值作为数组,Swift

Ios 将UIImage另存为用户默认值作为数组,Swift,ios,swift,nsarray,nsuserdefaults,nsdata,Ios,Swift,Nsarray,Nsuserdefaults,Nsdata,我有一个UiTableView,我需要有一个数组数据保存UIimage,以便临时保存 我认为如果我使用UserDefault,这是一个不错的解决方案,但我不知道如何在UserDefault中保存我知道我不使用。stringArray我不知道如何在Array Default中保存图像 struct Constants { static let myKeyImage = "myKeyIMG” } var arrayiMG = [String]() self.defaults.s

我有一个UiTableView,我需要有一个数组数据保存UIimage,以便临时保存

我认为如果我使用UserDefault,这是一个不错的解决方案,但我不知道如何在UserDefault中保存我知道我不使用。stringArray我不知道如何在Array Default中保存图像

struct Constants {

    static let myKeyImage = "myKeyIMG”

}


 var arrayiMG = [String]()
  self.defaults.stringArray(forKey: Constants.myKeyImage)


if (self.defaults.stringArray(forKey: Constants.myKeyImage) != nil)
{
arrayUrl = self.defaults.stringArray(forKey: Constants.myKeyURL)!
}
我想在.png或jpg中保存 像这样

func plane(from anchor: ARPlaneAnchor) -> SCNNode {
    if (`extension`.lowercased() == "png") {
        data = UIImagePNGRepresentation(image)
    }
    else if (`extension`.lowercased() == "jpg") {
        data = .uiImageJPEGRepresentation()
    }

}

类似这样的方法会奏效:

extension UserDefaults {
    func imageArray(forKey key: String) -> [UIImage]? {
        guard let array = self.array(forKey: key) as? [Data] else {
            return nil
        }
        return array.flatMap() { UIImage(data: $0) }
    }

    func set(_ imageArray: [UIImage], forKey key: String) {
        self.set(imageArray.flatMap({ UIImagePNGRepresentation($0) }), forKey: key)
    }
}
用法:

let imageArray = [image1, image2, image3]
UserDefaults.standard.set(imageArray, forKey: "images")

let images = UserDefaults.standard.imageArray(forKey: "image")

但是,我不建议将图像数组存储在
UserDefaults
中。将图像存储为文件可能更合适。然后,您可以将它们的路径存储在
UserDefaults

中,类似这样的方式可以工作:

extension UserDefaults {
    func imageArray(forKey key: String) -> [UIImage]? {
        guard let array = self.array(forKey: key) as? [Data] else {
            return nil
        }
        return array.flatMap() { UIImage(data: $0) }
    }

    func set(_ imageArray: [UIImage], forKey key: String) {
        self.set(imageArray.flatMap({ UIImagePNGRepresentation($0) }), forKey: key)
    }
}
用法:

let imageArray = [image1, image2, image3]
UserDefaults.standard.set(imageArray, forKey: "images")

let images = UserDefaults.standard.imageArray(forKey: "image")

但是,我不建议将图像数组存储在
UserDefaults
中。将图像存储为文件可能更合适。然后您可以将它们的路径存储在
UserDefaults

扩展中
真是糟糕透了name@Vyacheslav如果可能,请给我一个好方法和一个好的数组数据“我认为如果我使用UserDefault,这不是一个坏的解决方案”-这是一个坏的解决方案。UserDefaults并不是用来存储大量数据的。@rmaddy我需要暂时保存,在我需要删除图像数组之后,你有更好的解决方案吗?正如@Jake在回答的最后所说,将图像写入文件。
扩展名
非常糟糕name@Vyacheslav如果可能,请给我一个好方法和一个好的数组数据“我认为如果我使用UserDefault,这不是一个坏的解决方案”-这是一个坏的解决方案。UserDefaults并不是用来存储大量数据的。@rmaddy我需要暂时保存,在我需要删除图像数组之后,你有更好的解决方案吗?正如@Jake在回答的最后所说的,将图像写入文件。