arrays - 你能在核心数据中保存一组图像吗?

标签 arrays image swift ios8 store

我知道您可以通过使用实体的二进制数据属性来保存一个,但是可以保存多个吗?

你可以用这个保存一个:

UIImageJPEGRepresentation(image: UIImage)

您可以保存它,然后再次将其转换为图像

UIImage(data: ____)

但是我可以将充满图像的数组转换为二进制数据吗?

如果您不能使用核心数据,我还有其他方法可以做到吗?

顺便说一句,图像数组中充满了保存在设备上的用户拍摄图像..

感谢所有的帮助!

最佳答案

将您的数组转换为 NSMutableArray 并将其存档为 NSData

var imgArray = [UIImage]();

var CDataArray = NSMutableArray();

for img in imgArray{
    let data : NSData = NSData(data: UIImagePNGRepresentation(img))
    CDataArray.addObject(data);
}

//convert the Array to NSData
//you can save this in core data
var coreDataObject = NSKeyedArchiver.archivedDataWithRootObject(CDataArray);

从 CData 拉取后,提取数据:

//extract:
if let mySavedData = NSKeyedUnarchiver.unarchiveObjectWithData(coreDataObject) as? NSArray{
    //extract data..
}

swift 5

现在有一些方法被弃用了。以下代码适用于 Swift 5:

func coreDataObjectFromImages(images: [UIImage]) -> Data? {
    let dataArray = NSMutableArray()
    
    for img in images {
        if let data = img.pngData() {
            dataArray.add(data)
        }
    }
    
    return try? NSKeyedArchiver.archivedData(withRootObject: dataArray, requiringSecureCoding: true)
}

func imagesFromCoreData(object: Data?) -> [UIImage]? {
    var retVal = [UIImage]()

    guard let object = object else { return nil }
    if let dataArray = try? NSKeyedUnarchiver.unarchivedObject(ofClass: NSArray.self, from: object) {
        for data in dataArray {
            if let data = data as? Data, let image = UIImage(data: data) {
                retVal.append(image)
            }
        }
    }
    
    return retVal
}

关于arrays - 你能在核心数据中保存一组图像吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32155030/

相关文章:

javascript - 数组以更高的粒度返回未定义

html - 使 <img> 像搜索引擎中的文本一样

eclipse - 如何使用 URL 正确地将图像插入到 BIRT 报告中?

php - 如何在 PHP MYSQL 中缓存 RAND() 随机图像

ios - 如何安装更新的 swift-tools-version?

来自 bytearray 的 Python IEEE754

javascript - 在 JS 中从 JSON 对象检索数据

ios - SwiftUI:fullScreenCover 的半透明背景

arrays - 在 Golang 中获取指针数组的长度

swift - Xcode 中的 .xcworkspace/xcshareddata/WorkspaceSettings.xcsettings 中的 PreviewsEnabled 键指的是什么