1 首先属性(attribute)选择使用transformable格式。
2 新建类ArrayDataTransformer ,继承于NSValueTransformer。
3 .m文件实现一些方法(主要是为了把NSArray 转成NSData ,以及反转。所以,其实是通过NSData的形式来存储的)
#import "ArrayDataTransformer.h"
@implementation ArrayDataTransformer
+ (BOOL)allowsReverseTransformation {
return YES;
}
+ (Class)transformedValueClass {
return [NSData class];
}
- (id)transformedValue:(id)value {
NSArray *array=(NSArray *)value;
NSData *dataValue=[NSKeyedArchiver archivedDataWithRootObject:array];
return dataValue;
}
- (id)reverseTransformedValue:(id)value {
NSData *data=(NSData *)value;
NSArray *array=[NSKeyedUnarchiver unarchiveObjectWithData:data];
return array;
}
@end
4.点击Model中,使用transformable的实体(Entity)属性,看右边的属性(attribute),有个Name项,填入:ArrayDataTransformer
5.在你的实体(Entity)对应的 NSManagedObject子类里,实现下面方法,为了初始化的时候,就可以转换了。
+ (void)initialize {
if (self == [EMenpai class]) {
ArrayDataTransformer *transFormer=[[ArrayDataTransformer alloc]init];
[NSValueTransformer setValueTransformer:transFormer forName:@"ArrayDataTransformer"];
}
}