【问题标题】:NSValueTranformer to encrypt dataNSValueTransformer 加密数据
【发布时间】:2012-05-21 12:23:04
【问题描述】:

我想在 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;
}

方法

- (NSString*)transformedValue:(id)value

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

* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFString 字节]: 无法识别的选择器发送到实例 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];
}

【问题讨论】:

  • 您应该将您的编辑添加为答案并接受它作为正确的答案,这样您的问题就不再显示为未回答。

标签: ios core-data nsvaluetransformer


【解决方案1】:

我意识到我必须转换为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];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多