把NSArray存入coreData

1  首先属性(attribute)选择使用transformable格式。spa

2  新建类ArrayDataTransformer ,继承于NSValueTransformer。code

3  .m文件实现一些方法(主要是为了把NSArray 转成NSData  ,以及反转。因此,实际上是经过NSData的形式来存储的)orm

#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子类里,实现下面方法,为了初始化的时候,就能够转换了。it

+ (void)initialize {
    if (self == [EMenpai class]) {
        ArrayDataTransformer *transFormer=[[ArrayDataTransformer alloc]init];
        [NSValueTransformer setValueTransformer:transFormer forName:@"ArrayDataTransformer"];
    }
}
相关文章
相关标签/搜索