NSValueTranformer用于加密数据

我想借助NSValueTransformer加密一些核心数据列。 我的想法是,我使用数据类型转换,并为我的数据类型定义一些转换器。 在转换方法内部,我想加密/解密该值。 我定义了一个实际上什么也没做的变压器 – 目前没有实现加密function。

@implementation StringCryptoTransformer + (Class)transformedValueClass { return [NSString class]; } + (BOOL)allowsReverseTransformation { return YES; } - (NSString*)transformedValue:(id)value { NSLog(@"Transformer: %@",value); if([value isKindOfClass:[NSString class]]){ return value; } return nil; } - (NSString*)reverseTransformedValue:(id)value { return value; } 

方法

 - (NSString*)transformedValue:(id)value 

使用有效值调用但在获取对象时出现此错误:

*由于未捕获的exception’NSInvalidArgumentException’终止应用程序,原因:’ – [__ NSCFString bytes]:无法识别的选择器发送到实例0xf5859f0′

有什么想法有什么不对?

编辑:

我意识到我必须转换为NSData,反之亦然。 现在它工作正常

 - (id)transformedValue:(id)value { NSData *data = [((NSString*)value) dataUsingEncoding:NSUTF8StringEncoding]; return [CryptoUtils encryptWithKey:self.key data:data]; } - (id)reverseTransformedValue:(id)value { NSData *data = [CryptoUtils decryptWithKey:self.key data:value]; return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; } 

我意识到我必须转换为NSData ,反之亦然。 现在它工作正常

 - (id)transformedValue:(id)value { NSData *data = [((NSString*)value) dataUsingEncoding:NSUTF8StringEncoding]; return [CryptoUtils encryptWithKey:self.key data:data]; } - (id)reverseTransformedValue:(id)value { NSData *data = [CryptoUtils decryptWithKey:self.key data:value]; return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; }