把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"];
    }
}
相關文章
相關標籤/搜索