net*_*000 2 core-data ios nsvaluetransformer
我想借助NSValueTransformer加密一些核心数据列.我的想法是,我使用数据类型转换,并为我的数据类型定义一些转换器.在转换方法中,我想加密/解密该值.我定义了一个实际上什么也没做的变压器 - 目前没有实现加密功能.
@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;
}
Run Code Online (Sandbox Code Playgroud)
方法
- (NSString*)transformedValue:(id)value
Run Code Online (Sandbox Code Playgroud)
使用有效值调用但在获取对象时出现此错误:
*由于未捕获的异常'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];
}
Run Code Online (Sandbox Code Playgroud)
我意识到我必须转换为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];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1214 次 |
| 最近记录: |