如何将 UIImages 和 NSArrays 存储在 CoreData 文件中?使用啥属性类型?

Posted

技术标签:

【中文标题】如何将 UIImages 和 NSArrays 存储在 CoreData 文件中?使用啥属性类型?【英文标题】:How to store UIImages and NSArrays in a CoreData file? What attribute type to use?如何将 UIImages 和 NSArrays 存储在 CoreData 文件中?使用什么属性类型? 【发布时间】:2011-03-31 22:19:03 【问题描述】:

我刚刚开始使用核心数据,我想知道我需要使用哪种属性类型,以便可以将 UIImage 和 NSData 存储在 CoreData 的“文件”中。我的意思是我需要将属性类型设置为什么。

【问题讨论】:

【参考方案1】:

对于图像,创建一个类型 Transformable,然后将以下内容添加到您的 .m 文件中:

@implementation ImageToDataTransformer

+ (BOOL)allowsReverseTransformation 
    return YES;


+ (Class)transformedValueClass 
    return [NSData class];


- (id)transformedValue:(id)value 
    NSData *data = UIImagePNGRepresentation(value);
    return data;


- (id)reverseTransformedValue:(id)value 
    UIImage *uiImage = [[UIImage alloc] initWithData:value];
    return [uiImage autorelease];

【讨论】:

【参考方案2】:

通过将转换器设置为 NSUnarchiveFromDataTransformerName,可以将 UIImage 存储为 Transformable,而无需编写任何额外的代码。

请参阅http://ootips.org/yonat/uiimage-in-coredata/ 的说明。

【讨论】:

【参考方案3】:

类型是“二进制数据”,我相信它最终会成为实体属性中的 NSData 类型。

但是对于 UIImage,您不能将其按原样存储在数据库中 - 您必须先将其转换为 NSData 对象(转换为 JPG 或 PNG 文件)或将 UIImage 存储到磁盘(作为PNG或JPG),然后将文件路径存储在数据库中。

除非它是一个非常小的图像,否则最好不要将它保存在数据库中。

【讨论】:

以上是关于如何将 UIImages 和 NSArrays 存储在 CoreData 文件中?使用啥属性类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UIImages 数组添加到集合视图

Objective-C,为啥这些 NSArrays 不匹配?

如何将数组复制到 UIImages 到另一个数组中?

如何通过按 UIButton 从数组中切换 UIViewController 中的 UIImages

将 UIImages 高度缩放到 UIImageView 高度

如何在 xCode 中保存 UIimages 数组(swift)