一、NSNumber
1.1 NSNumber的作用:由于集合类型只能存放OC类型数据,无法存放int类型数据。当在开发中需要int类型的数据时,可以将int类型包装成NSNumber对象再存放。
1.2 NSNumber和int的转换
// 将数值10转换为NSNumber类型,并且赋值到字典中
NSNumber *num = [NSNumber numberWithInt:10];
NSDictionary * dict = @{
@"name":@"jack",
@"age":num
};
// 获取字典中age对应的值
NSNumber *num2=dict[@"age"];
// 将NSNumber对象的值转换为int类型
int a = [num2 intValue];
NSLog(@"%d",a);
NSNumber *n = [NSNumber numberWithDouble:10.5];
int d = [n doubleValue];
1.4 NSString和int的转换
NSString *str = [NSString stringWithFormat:@"%d",20];//int转NSString
NSLog(@"%d",[str intValue]); // NSString转int
1.5 快速将其它转换成NSNumber对象
@20 //将20包装成一个NSNumber对象
@10.5
@YES
@‘A’ // NSNumber对象
@“A” // NSString对象
*将int变量包装成NSNumber对象
int age = 100;
@(age);
二、NSValue
2.1 NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue。
2.2 NSNumber只能包装基于int类型的数据,无法包装结构体,有局限性。而NSValue可以将任何基本数据类型转换为OC对象,如结构体等。
CGPoint p = CGPointMake(10, 10);
// 将结构体转换为Value对象
NSValue *value = [NSValue valueWithPoint:p];
NSArray *array=@[value]; // 将value放进数组
// 将value转换为对应的结构体
[value pointValue];
三、NSDate
#import <Foundation/Foundation.h>
int main() {
//创建一个时间对象
NSDate *date = [NSDate date];
// 打印出的时间是0时区的时间
NSLog(@"%@",date);
// 比参数date的时间晚5秒
NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];
NSLog(@"%@",date2);
// 从1970年开始走过的秒数
NSTimeInterval seconds = [date2 timeIntervalSince1970];
// date2时间距离现在经过的秒数
[date2 timeIntervalSinceNow];
// 日期的格式化
// 将日期转换为string
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// y:年 M:月 d:日 H:(24)时 h:(12)时 m:分 s:秒
formatter.dateFormat=@"yyyy/MM/dd HH:mm:ss";
// 将日期按照上面的格式转换为string
NSString *str = [formatter stringFromDate:date];
NSLog(@"%@",str);
// 将string转换为日期
NSString *time = @"2015/01/02 14:20";
NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
formatter2.dateFormat=@"yyyy/MM/dd HH:mm";
NSDate *date3 = [formatter2 dateFromString:time];
NSLog(@"%@",date3);
return 0;
}