首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在transformedValue中调用NSValueTransformer

无法在transformedValue中调用NSValueTransformer
EN

Stack Overflow用户
提问于 2014-08-25 07:36:34
回答 1查看 794关注 0票数 0

这是我的NSValueTransformer实现

代码语言:javascript
复制
+ (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
}

我在运行时注册它

代码语言:javascript
复制
 EncryptionTransformer *transformer = [[EncryptionTransformer alloc] init];
 [NSValueTransformer setValueTransformer:transformer forName:@"EncryptionTransformer"];

我把我的领域标记为可转换

在我的MO里有一项财产

代码语言:javascript
复制
@property (nonatomic, strong) NSData *someData;

@dynamic someData;

我做错什么了?不叫transformedValue

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-25 13:02:21

我在上面的评论中对你的问题作了一些假设。我在测试示例中复制了您的设置,发现如下:

  1. 您的设置是正确的-并且不需要像EncryptionTransformer *transformer = [[EncryptionTransformer alloc] init]; [NSValueTransformer setValueTransformer:transformer forName:@"EncryptionTransformer"];那样在运行时设置值转换器。
  2. -(id)transformedValue:之后调用实际值变压器的转换方法-[NSManagedObjectContext save:]
  3. 此外,如果您的NSManagedObjectContext没有直接连接到持久存储协调器(在MagicalRecord或RestKit等框架中提供的流行方法),则-(id)transformedValue:不会在-[NSManagedObjectContext save:]之后调用。它只在上下文上的-[NSManagedObjectContext save:]之后调用,后者直接连接到持久存储协调器。
  4. 对于-(id)reverseTransformedValue:(id)value,类似的规则是真的,只有在从持久存储协调器获取之后才调用它。

简单的代码(我使用您的设置):

代码语言:javascript
复制
char *data = "abc";
NSManagedObjectContext *moc =
[(TCDAppDelegate*)[[UIApplication sharedApplication] delegate] managedObjectContext];
Event *event = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([Event class]) inManagedObjectContext:moc];
event.timeStamp = [NSDate date];
event.myData = [NSData dataWithBytes:data length:4];   // no call to -(id)transformedValue:
[moc save:nil];   // called -(id)transformedValue:
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25481104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档