如何在Core Data文件中存储图像和数组?使用什么属性类型?

时间:2011-03-31 22:19:04

标签: iphone objective-c xcode core-data ios4

我刚刚开始核心数据,我想知道我需要使用哪种属性类型,以便我可以将UIImage和NSData存储在CoreData'文件中'。这意味着我需要将属性类型设置为。

3 个答案:

答案 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而无需编写任何其他代码。

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

答案 2 :(得分:2)

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

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

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