Вопрос

Я хочу зашифровать некоторые столбцы основных данных с помощью 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
.

вызывается допустимым значением, но при выборе объектов я получаю эту ошибку:

* Terminating App из-за неосторожности исключения «NsinvalidArgumentexception», причина: '- [__ NSCFSTSTRING 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];
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top