【发布时间】:2011-03-31 22:19:03
【问题描述】:
我刚刚开始使用核心数据,我想知道我需要使用哪种属性类型,以便可以将 UIImage 和 NSData 存储在 CoreData 的“文件”中。我的意思是我需要将属性类型设置为什么。
【问题讨论】:
标签: iphone objective-c xcode core-data ios4
我刚刚开始使用核心数据,我想知道我需要使用哪种属性类型,以便可以将 UIImage 和 NSData 存储在 CoreData 的“文件”中。我的意思是我需要将属性类型设置为什么。
【问题讨论】:
标签: iphone objective-c xcode core-data ios4
对于图像,创建一个类型 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];
}
【讨论】:
通过将转换器设置为 NSUnarchiveFromDataTransformerName,可以将 UIImage 存储为 Transformable,而无需编写任何额外的代码。
【讨论】:
类型是“二进制数据”,我相信它最终会成为实体属性中的 NSData 类型。
但是对于 UIImage,您不能将其按原样存储在数据库中 - 您必须先将其转换为 NSData 对象(转换为 JPG 或 PNG 文件)或将 UIImage 存储到磁盘(作为PNG或JPG),然后将文件路径存储在数据库中。
除非它是一个非常小的图像,否则最好不要将它保存在数据库中。
【讨论】: