您的位置:首页 > 产品设计 > UI/UE

Foundation框架第十弹:NSValue的常用方法

2014-12-23 20:37 218 查看
                 补充(NSNumber是继承于NSValue的,NSNumber只能包装数字类型,NSValue可以包装任何类型)

         // ==============将任意数据类型包装成NSValue======================

        // 1.NSString

        
       
NSString *name = @"Robin";

       
// 包装参数1:
变量的地址

       
// 包装参数2:
变量的数据类型,需要时用@edcode()来传入
       
NSValue *v = [NSValue
valueWithBytes:&name objCType:@encode(NSString)];

        //
将NSValue放到数组中
       
NSArray *array = @[v];

        //
从数组中获取NSValue
       
NSValue *getV = array[0];
       
// 转换
       
NSString *n ;
       [getV
getValue:&n];
       
// 显示
       
NSLog(@"%@",n);

        

        

        // 2.自定义结构体

        
       
Date date = {2014,12,23};
       
// 封装
       
NSValue *ns = [NSValue
valueWithBytes:&date objCType:@encode(Date)];
       
NSArray *array1 = @[ns];
       
NSValue *na = array1[0];
       
Date d;
        [na
getValue:&d];
       
NSLog(@"%d-->%d-->%d",d.year,d.month,d.day);

        

        

       
// ==============将常见结构体包装成NSValue======================

        // NSRange
       
NSRange range = NSMakeRange(2,
3);
       
// 包装
       
NSValue *ns1 = [NSValue
valueWithRange:range];

        //
把NSValue放到NSArray中.
       
NSArray *array0 = @[ns1];

        //
从NSArray中获取NSValue
       
NSValue *ns2 = array0[0];

        //
从NSValue中获取原来的结构体
       
NSRange range1 = ns2.rangeValue;
       
//显示
       
NSLog(@"%ld,%ld",range1.location,range1.length);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Foundation NSValue