我刚刚开始核心数据,我想知道我需要使用哪种属性类型,以便我可以将UIImage和NSData存储在CoreData'文件中'。这意味着我需要将属性类型设置为。
答案 0 :(得分:3)
对于图像,创建一个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];
}
答案 1 :(得分:3)
通过将变换器设置为 NSUnarchiveFromDataTransformerName ,UIImage可以存储为Transformable而无需编写任何其他代码。
答案 2 :(得分:2)
类型是“二进制数据”,我认为它最终会成为实体属性中的NSData类型。
但是对于UIImage,你不能只是按原样将它存储在数据库中 - 你必须先将它转换为NSData对象(转换为JPG或PNG文件)或将UIImage存储到磁盘(作为PNG或JPG)然后将文件路径存储在数据库中。
除非它是一个非常小的图像,否则最好不要将其保存在数据库中。