There is my implementation of NSValueTransformer
+ (Class)transformedValueClass {
return [NSData class];
}
+ (BOOL)allowsReverseTransformation {
return YES;
}
- (id)transformedValue:(id)value {
// some implementation, there is breakpoint
}
- (id)reverseTransformedValue:(id)value {
// some implementation, there is breakpoint
}
I register it in runtime
EncryptionTransformer *transformer = [[EncryptionTransformer alloc] init];
[NSValueTransformer setValueTransformer:transformer forName:@"EncryptionTransformer"];
I mark my field as Transformable

And there is a property in my MO
@property (nonatomic, strong) NSData *someData;
@dynamic someData;
What am I doing wrong? transformedValue is not called.
I made some assumptions about your problem in comment above.. I reproduced your setup in test example and found following:
EncryptionTransformer *transformer = [[EncryptionTransformer alloc] init]; [NSValueTransformer setValueTransformer:transformer forName:@"EncryptionTransformer"];-(id)transformedValue:is called after-[NSManagedObjectContext save:]NSManagedObjectContextisn't directly connected to persistent store coordinator (the popular approach providedout-of-boxin frameworks like MagicalRecord or RestKit)-(id)transformedValue:isn't called after-[NSManagedObjectContext save:]. It is called only after-[NSManagedObjectContext save:]on context which is directly connected to persistent store coordinator.-(id)reverseTransformedValue:(id)valuethe similar rules are true - it is called only after fetches from persistent store coordinatorSimple code (i use your setup):