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

Arb*_*eli 3 arrays store image swift ios8

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

您可以使用以下方法保存一个:

UIImageJPEGRepresentation(image: UIImage)
Run Code Online (Sandbox Code Playgroud)

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

UIImage(data: ____)
Run Code Online (Sandbox Code Playgroud)

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

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

顺便说一句,图像阵列充满了保存在设备上的用户拍摄的图像。

感谢所有的帮助者!

Dan*_*rom 5

将您的数组转换为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);
Run Code Online (Sandbox Code Playgroud)

从 CData 中提取后,提取数据:

//extract:
if let mySavedData = NSKeyedUnarchiver.unarchiveObjectWithData(coreDataObject) as? NSArray{
    //extract data..
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特 5

现在不推荐使用一些方法。以下代码适用于 Swift 5:

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);
Run Code Online (Sandbox Code Playgroud)