Foundation框架-05 NSNumber和NSValue

原创 2015年07月07日 22:56:05

Foundation框架-05 NSNumber和NSValue


1.NSNumber类

  • NSNumber可以将基本数据类型转换为对象类型
  • 将基本数据类型转换为NSNumer对象类型
    • NSNumber *valueNumber = [NSNumber numberWithInt:(基本数据类型)value];
  • 将对象类型转换为基本数据类型
    • int value = [intNumber intVlue];
  • 基本数据类型转换对象类型简写
    • NSNumber *temp = @(number);
    • NSNumber *temp =@10;
    • // 注意: 如果传入的是变量那么必须在@后面写上(), 如果传入的常量, 那么@后面的()可以省略

2.NSValue类

  • NSNumber是NSValue的子类, 但NSNumber只能包装数字类型,NSValue可以包装任意值
  • 利用NSValue包装常见的结构体
    • CGPoint point = CGPointMake(x,y);
    • NSValue *value = [NSValue valueWithPoint:point];//将point包装为NSValue对象
    • -(NSPoint)pointValue;//从对象中取出此前包转的结构体
  • 利用NSValue包装自定义的结构体
 typedef struct{
        int age;
        char *name;
        double height;
    }Person;
Person p = {30, "lnj", 1.75};
// valueWithBytes: 接收一个指针, 需要传递需要包装的结构体的变量的地址
// objCType: 需要传递需要包装的数据类型
NSValue *pValue = [NSValue valueWithBytes:&p objCType:@encode(Person)];
// 从NSValue中取出自定义的结构体变量
Person res;
[pValue getValue:&res];

3.注意点

  • 由于NSArray\NSDictionary中只能存放OC对象,不能存放int\float\double等基本数据类,如果真想把基本数据(比如int)放进数组或字典中,需要先将基本数据类型包装成OC对象
  • 一般若是包装基本数据类型,使用NSNumber,包装构造类型或自定义构造类型时使用NSValue

IOS开发-NSNumber、NSValue、NSData的区别

简单介绍我们在编码的时候,有时候需要将C里面原生的数据封装成对象,这样才能将其打包进NSDictionary或者NSArray进行存储或者其他操作;又譬如有时候需要存储结构体、图片等数据。OC给我们提...
  • Lotheve
  • Lotheve
  • 2016年03月08日 14:45
  • 1347

【iOS开发】值对象--NSValue,NSNumber

NSValue 简介 NSValue相当于一个容器,父类是NSObject,直接子类NSNumber。 可以装任意数据类型数据,包括C数据和OC数据 如基本数据类型 int float char等 ...
  • a316212802
  • a316212802
  • 2016年01月14日 00:01
  • 956

Foundation框架—NSNumber、NSValue、NSDate

一、NSNumber 这个类主要是用来封装基本类型的 1. OC中的集合是不允许存入基本类型的,这就需要我们将基本类型进行封装下,然后存进去。这个方法类似于Java中的自动装箱和卸箱,Java中的集...
  • haojie2014
  • haojie2014
  • 2015年08月20日 10:08
  • 297

Foundation框架NSNumber、NSValue和NSDate

一、NSNumber          前几篇笔记中,小桥复习了Foundatio框架中的几个类,这三个是OC学习的尾声了。 小桥已经复习过OC数组类NSArray,也说过它只能存放OC的对象,对于...
  • HX_lei
  • HX_lei
  • 2016年05月08日 11:59
  • 121

【黑马程序员】【Foundation框架】NSNumber、NSValue和NSData

//集合只能盛放对象 对于基本数据类型封装需要用NSnumber来转换 NSNumber *number = [NSNumber numberWithInt:2];        NSM...
  • u010419580
  • u010419580
  • 2015年10月13日 22:05
  • 128

NSNumber NSValue与NSDate 详解

我们在编码中,很多时候需要将C里面原生的数据封装成对象,这样可以用NSDictionary或者NSArray来存取访问。尤其是一些做适配的情况下,这种封装是不可避免的。Objective-C提供了不少...
  • qhwc2009
  • qhwc2009
  • 2016年08月12日 20:41
  • 243

黑马程序员——foundation框架之NSNumber,NSDate,NSValue

NSNumber可以将基本数据类型包装起来,形成一个对象,这样就可以给其发送消息,装入NSArray中等等。 NSNumber * intNumber=[NSNumber numberWithInt...
  • zya7016322
  • zya7016322
  • 2014年06月19日 05:57
  • 282

foundation的使用——NSNumber NSValue

NSNumber *num = [NSNumber numberWithInt:10];          NSDictionary *dict =  @{     @"name" ...
  • u014526204
  • u014526204
  • 2015年12月14日 12:20
  • 217

OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

前一篇说到了Foundation框架中的NSDirctionary类:http://blog.csdn.net/jiangwei0910410003/article/details/41830179,...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2014年12月10日 22:20
  • 8821

Foundation NSNumber NSValue NSNull NSDate

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- // // main.m // NSNumber // // Created by...
  • xi_niuniu
  • xi_niuniu
  • 2015年04月19日 14:41
  • 211
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Foundation框架-05 NSNumber和NSValue
举报原因:
原因补充:

(最多只允许输入30个字)