Question

Je souhaite chiffrer certaines colonnes de données de base à l'aide d'un NSValueTransformer.L'idée est que j'utilise un type de données transformable et que je définis un transformateur pour mes types de données.Dans les méthodes de transformation, je souhaite crypter/déchiffrer la valeur.J'ai défini un transformateur qui ne fait en réalité rien - les éléments cryptographiques ne sont actuellement pas implémentés.

@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;
}

La méthode

- (NSString*)transformedValue:(id)value

est appelé avec une valeur valide mais lors de la récupération d'objets, j'obtiens cette erreur :

* Arrêt de l'application en raison d'une exception non interceptée 'NSInvalidArgumentException', raison :'-[__NSCFString octets] :sélecteur non reconnu envoyé à l'instance 0xf5859f0'

Des idées sur ce qui ne va pas ?

MODIFIER:

J'ai réalisé que je devais convertir en NSData et vice versa.Maintenant ça marche bien

- (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];
}
Était-ce utile?

La solution

J'ai réalisé que je devais me convertir en NSData et vice versa.Maintenant ça marche bien

- (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];
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top