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

Foundation4,NSNumber,NSValue,NSNull,NSDate

2014-05-17 23:15 477 查看
NSNumber 是NSValu的子类

把int float double 数字类型的包装成OC对象后,能让如Array这类不能放基本数据类型的类中。

// 将int类型的10 包装成 一个NSNumber对象
NSNumber *number = [NSNumber numberWithInt:10];
NSLog(@"number=%@", number);

NSMutableArray *array = [NSMutableArray array];
// 添加数值到数组中
[array addObject:number];

// 取出来还是一个NSNumber对象,不支持自动解包(也就是不会自动转化为int类型)
NSNumber *number1 = [array lastObject];
// 将NSNumber转化成int类型
int num = [number1 intValue];
NSLog(@"num=%i", num);


其他基本类型的使用方法依次类推

NSValue

封装OC自带的结构体类型。

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];

BOOL result = CGPointEqualToPoint(point1, point);
NSLog(@"result=%i", result);


封装自定义的结构体类型

typedef struct {
int year;
int month;
int day;
} Date;

Date date = {2013, 4, 7};
// void *代表任何指针
// 这里要传结构体的地址&date

// 根据结构体类型生成 对应的 类型描述字符串
char *type = @encode(Date);
NSValue *value = [NSValue value:&date withObjCType:type];

// 定义一个结构体变量
Date date1;

// 取出包装好的结构体
[value getValue:&date1];

// [value objCType];  取出类型描述字符串
NSLog(@"year=%i, month=%i, day=%i", date1.year, date1.month, date1.day);


NSNull

封装一个nil值。

// [NSNull null]返回的是同一个单例对象
NSNull *n = [NSNull null];
NSNull *n1 = [NSNull null];
// 对象==对象,判断地址是否相同
NSLog(@"%i", n == n1);

// {"id":10, "name":"mj", "descs":null}


NSDate

日期创建

// date方法返回的就是当前时间(now)
NSDate *date = [NSDate date];

// now:  11:12:40
// date: 11:12:50
date = [NSDate dateWithTimeIntervalSinceNow:10];// 参数单位是秒,返回比当前时间晚10秒的时间

// 从1970-1-1 00:00:00开始
date = [NSDate dateWithTimeIntervalSince1970:10];

// 随机返回一个比较遥远的未来时间
date = [NSDate distantFuture];

// 随机返回一个比较遥远的过去时间
date = [NSDate distantPast];
NSLog(@"%@", date);


NSDate的使用

NSDate *date = [NSDate date];
// 返回1970-1-1开始走过的毫秒数
NSTimeInterval interval = [date timeIntervalSince1970];

// 跟其他时间进行对比
// [date timeIntervalSinceDate:<#(NSDate *)#>];
NSDate *date2 = [NSDate date];
// 返回比较早的那个时间
[date earlierDate:date2];
// 返回比较晚的那个时间
[date laterDate:date2];


NSDate的日期格式设置

NSDate *date = [NSDate date];
// 2013-04-07 11:14:45
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// HH是24进制,hh是12进制
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";

// 设置为北京时间,有一些错误
// formatter.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"] autorelease];

NSString *string = [formatter stringFromDate:date];
NSLog(@"%@", string);

// 返回的格林治时间
NSDate *date2 = [formatter dateFromString:@"2010-09-09 13:14:56"];

NSLog(@"%@", date2);

// 创建时有alloc,需要release
[formatter release];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐