如何将 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 文件中?使用啥属性类型?的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C,为啥这些 NSArrays 不匹配?
如何通过按 UIButton 从数组中切换 UIViewController 中的 UIImages