OC——Foundation—常用的类(4)——NSNumber、NSValue、NSNull、NSDate

NSNumber

NSNumber可以将基本数据类型包装成对象,这样就可以间接将基本数据类型存进NSArray,NSDictionary等集合中
常见的初始化方法:
//将一个int类型的数包装成一个number对象
NSNumber *number=[NSNumber numberWithInt:10];
//创建一个数组
NSMutableArray *array=[NSMutableArray array];
//添加值到数组中
[array addObject:number];
//从数组中取出来的还是一个number对象,不支持自动解包
NSNumber *number1=[array lastObject];
//将number转换为int类型
int num=[number1 intValue];
NSValue
NSNumber是NSValue的子类,但NSNumber只能包装数字类型,NSValue可以包装任意值。也就可以用NSValue包装结构体后加入NSArray、NSDictionary等集合中
创建NSValue的常用方法:
//初始化一个结构体
CGPoint point=CGPointMake(10,10);
//将结构体包装成一个对象
NSValue *value=[NSValue valueWithPoint:point];
NSMutableArray *array=[NSMutableArray array];
//添加value
[array addObject:value];
//取出放进去的value
NSValue *value1=[array lastObject];
CGPoint *point1=[value1 pointValue];

NSValue包装自定义结构体

typedef struct{
  int year;
  int month;
  int day;
}Date;
void value(){
  Date date={2015,4,13};
  //这里要传递结构体的地址
  char *type=@encode(Date);
  NSValue *value=[NSValue value:&date withObjCType:type];
  //定义一个结构体变量
  Date date1;
  //取出包装过的结构体变量
  [value getValue:&date1];
}
NSNull
集合中是不能存放nil值的,因为nil在结合中又特殊含义,但有时确实需要存储一个表示“什么都没有”的值,那么就可以使用NSNull,它也是NSObject的一个子类
创建和获取NSNull的方法
+(NSNull*)null
[NSNull null]总是返回一样的值,所以可以用==将该值与其他值进行比较
 
 
NSDate
Date返回的是当前的时间
NSDate *date=[NSDate date];
date=[NSDate dateWithTimeIntervalSinceNow:10]
//返回当前的时间加10秒
date=[NSDate dateWithTimeIntervalSince1970:10]
//机器时间从1970年开始,因此,返回从1970开始再加10秒的时间
date=[NSDate distantFuture];
//返回一个遥远的将来的时间
date=[NSDate distantPast];
//返回一个遥远的过去的时间
原文地址:https://www.cnblogs.com/hqzxbb/p/4421431.html