NSValueTransformer
来源:互联网 发布:windows 10 关闭更新 编辑:程序博客网 时间:2024/06/14 03:35
主要用于数据类型的变换(如Model?View等),变换可以是单向或双向的。
◆NSValueTransformer是一个抽象类,所有的类型变换都在NSValueTransformer的子类中定义。
◎NSValueTransformer类的已实装方法
管理值变换的名字和值变换对象的mapping方法。
> +valueTransformerNames 返回所有注册的子类转换器
> +setValueTransformer:forName: 并不是注册子类,而是注册NSValueTransformer子类的实例。这样,提供常用功能的值变换,可以用不同的名称不同的参数多次注册。
> +valueTransformerForName: 子类转换器实例的取得(Singleton)
◎子类必须实装的抽象方法
取得转换器信息的方法
> +transformedValueClass
> +allowReverseTransformation
实际转换时使用的方法
> -transformedValue:
> -reverseTransformedValue: 仅在双向时必须
◆框架提供的一些常用子类转换器
> NSNegateBooleanTransformerName
> NSIsNilTransformerName
> NSIsNotNilTransformerName
> NSUnarchiveFromDataTransformerName
core data UIColor转换为 自定义数据类型
<span style="font-size:14px;">@interface UIColorRGBValueTransformer : NSValueTransformer@end#import "UIColorRGBValueTransformer.h"@implementation UIColorRGBValueTransformer+ (Class)transformedValueClass{ return [NSData class];}+ (BOOL)allowsReverseTransformation{ return YES;}- (id)transformedValue:(id)value{ UIColor* color = value; const CGFloat* components = CGColorGetComponents(color.CGColor); NSString* colorAsString = [NSString stringWithFormat:@"%f,%f,%f,%f", components[0], components[1], components[2], components[3]]; return [colorAsString dataUsingEncoding:NSUTF8StringEncoding];}- (id)reverseTransformedValue:(id)value{ NSString* colorAsString = [[[NSString alloc] initWithData:value encoding:NSUTF8StringEncoding] autorelease]; NSArray* components = [colorAsString componentsSeparatedByString:@","]; CGFloat r = [[components objectAtIndex:0] floatValue]; CGFloat g = [[components objectAtIndex:1] floatValue]; CGFloat b = [[components objectAtIndex:2] floatValue]; CGFloat a = [[components objectAtIndex:3] floatValue]; return [UIColor colorWithRed:r green:g blue:b alpha:a];}</span><span style="font-size:10px;"></span>
0 0
- NSValueTransformer
- 常用税收风险管理指标
- 基础搜索算法题解(N-R)
- android 媒体文档
- c++ bug
- ASP.NET多线程下使用HttpContext.Current为null解决方案
- NSValueTransformer
- IplImag to QImage与QImage to IplImage
- 【Android 非常基础】android开发小技巧
- 服务简介
- IOS网络请求时发生“The network connection was lost.”错误
- 关于docker部署的一个简单应用(入门级别)
- sass 入门
- android ProgressBar简单介绍及实例
- 动态主机配置协议(DHCP)