Foundation4,NSNumber,NSValue,NSNull,NSDate

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dwt1220

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值