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

Oc-语句总结(5)-NSnumber/NSvalue/NSDate

2016-02-05 14:04 489 查看
1,NSNumber

 ❤  NSNumber

主要作用是将基本数据类型包装成对象放入数组或者字典
  ❤  NSNumber要转换成什莫基本数据类型就 
xxxvalue  
        //NSNumber创建
                       int/float/double......
       
NSNumber *num = [NSNumber
numberWithInt:33];
       
NSLog(@"%@",num);
        NSNumber
*num1 = [NSNumber
numberWithFloat:3.3];

        NSLog(@"%@",num1);

        NSNumber
*num2 = [NSNumber
numberWithBool:YES]; 
//布尔类型
       
NSLog(@"%@",num2);
  ❤  //现在的写法
       
NSNumber *num3 =
@10;

        NSNumber
*num4 =
@1.1;

        NSNumber
*num5 =
@YES;

       

        //将对象追加到可变数组

        NSMutableArray
*arr = [NSMutableArray
array];

        [arr addObject:num5];
       
NSLog(@"%@",arr);

2.NSValue
 ❤NSValue主要用于将结构体或指针或枚举类型的数据(CG类型)包装成对象存入数组或字典中
 ❤NSNumber是NSValue的子类
  例(1)
       //1.创建CG结构体
        
CGPoint point =
CGPointMake(2,
2);

        //2.将CG包装成对象

        NSValue
*value = [NSValue
valueWithPoint:point];

       //3.创建可变数组对其添加

        NSMutableArray
*arr = [NSMutableArray
array];

        [arr addObject:value];
       
NSLog(@"%@",arr);
 
        //将存入的CG取出来-将NSValue在转成结构体
        CGPoint
p = [value
pointValue];
        NSLog(@"x = %.2lf,y = %.2lf",p.x,p.y);

❤例(2)
       //建立结构体

        typedef 
struct{

            int
year;

            int
month;

            int
day;

        }Date;

       //赋值

         Date
p;

        p.year    =
2016;

        p.month
=
2;

        p.day    =
5;

        //包装     
参数1是你要把谁变成对象,就(&)传谁的地址

                   
// 参数2是固定类型:@encode(结构体类型)

        NSValue
*val = [NSValue
valueWithBytes:&p
objCType:@encode(Date)];

        //创建可变数组并存入

        NSMutableArray
*arr1 = [NSMutableArray
array];

        [arr1 addObject:val];

        NSLog(@"%@",val);

      

        //将结构体拿出

        Date
newD;

        //参数:你要用谁来接收,就传&谁的地址

        [val getValue:&newD];

        NSLog(@"%d,%d,%d",newD.year,newD.month,newD.day);
       

❤3.NSDate的使用
解释:可以进行一些常见的日期/时间处理,一个NSDate就代表一个时间,[NSDate date]返回的是当前   时间。
1.获取当前日期
        //调取当前时间(格林威治时间)
       
NSDate *date = [NSDate
date];
       
NSLog(@"%@",date);
        //设置时区(东八区时间)
       
NSTimeZone *zone  =  [NSTimeZone
systemTimeZone]; 
//设置时间间隔
       
NSInteger  iterval   = [zone secondsFromGMTForDate:date];
//重新生成时间
       
NSDate *localeDate =[date dateByAddingTimeInterval:iterval];//s生成当前时间localDate
       
NSLog(@"%@",localeDate);
2.格式化日期   
      //格式化时间(把日期格式化字符串)
       
//1.new

        NSDateFormatter
*df = [NSDateFormatter
new];

        //2.调用NSDateFormatter,传入你想打印的格式

        df.dateFormat
=@"yyyy年MM月dd日
HH:mm:ss";

        NSString
*str =  [df
stringFromDate:date];
       
NSLog(@"%@",str);
注意:一般1、2是一起出现的
       
//字符串转回时间
        NSDate
* dd = [df
dateFromString:str];
       
NSLog(@"%@",dd);  
//格林威治时间

 3.计算时间
    明天
       
//1)明天的此刻 
确定时长精确到秒

        NSTimeInterval
secondsPerDay =
24*60*60;

        //距离现在有多久

        NSDate
*tomorrow = [NSDate
dateWithTimeIntervalSinceNow:secondsPerDay];
       
NSLog(@"myDate = %@",tomorrow);
      昨天
        //2)昨天的现在
       
NSTimeInterval secondsPerDay1 =
24*60*60;

        NSDate
*now = [NSDate
date];

        //计算时间,减去时长
       
NSDate *yesterDay = [now addTimeInterval:-secondsPerDay1];
NSLog(@"yesterDay = %@",yesterDay);
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: