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 ( @"%@" ,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];
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];
//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 );
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];
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];
NSTimeInterval secondsPerDay = 24 * 60 * 60 ;
// 距离现在有多久
NSDate *tomorrow = [ NSDate dateWithTimeIntervalSinceNow :secondsPerDay];
NSLog(@"myDate = %@",tomorrow);
昨天
//2)
昨天的现在
NSTimeInterval
secondsPerDay1 =
24
*
60
*
60
;
NSDate *now = [ NSDate date ];
// 计算时间,减去时长
NSDate *now = [ NSDate date ];
// 计算时间,减去时长
NSDate *yesterDay = [now addTimeInterval:-secondsPerDay1]; NSLog(@"yesterDay = %@",yesterDay);