一、NSNumber
OC数组类NSArray,它只能存放
OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int、float,结构体存放的OC数组中,怎么办?这里的
NSNumber就有用了,它能够把基本数据类型包装成OC对象。
// 将整形包装成OC对象 NSNumber *num1 = [NSNumber numberWithInt:120]; // 将浮点形包装成OC对象 NSNumber *num2 = [NSNumber numberWithDouble:0.5]; // 把包装后的数据存放到OC数组中 NSArray *array = @[@"年龄",num1]; // 遍历数组 for (id obj in array) { NSLog(@"%@", obj); }
通过NSNumber的方法能够把所有基本数据类型包装成OC对象,再存放到OC数组中。要把NSNumber包装后的对象还原成基本数
// 将NSNumber类型的对象还原成基本数据类型 int age = [num1 intValue]; double a = [num2 doubleValue]; 还可以 使用编译器特性快速包装一个基本数据: // 快速包装 @120; @0.5; @NO; // 使用快速包装,再存放到数组中 NSArray *array2 = @[@"hello",@100, @YES, @0.3, @‘H‘]; 二、NSValue
NSValue和NSNumber相似,具体来说前者是后者的父类。NSValue可以包装复杂的基本数据类型,如结构体,枚举。
int main() { // OC结构体 CGPoint point = CGPointMake(11, 12); // 将结构体包装成OC对象 NSValue *val = [NSValue valueWithPoint:point]; // 将包装后的OC对象存放到OC数组 NSArray *array = @[val]; NSLog(@"%@", array); return 0; }
三、NSDate
这个类是与时间相关的,日期的格式化。
// 创建日期对象 NSDate *date = [NSDate date]; // 日期格式化类 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; // y 年 M 月 d 日 // m 分 s 秒 H (24)时 h(12)时 formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; // 固定写法,不能随便写 // 将日期格式化成字符串对象 NSString *str = [formatter stringFromDate:date]; NSLog(@"%@", str); // 格式化的参数都有固定含意,不能随意写。上面是将日期格式化输出,下面再来将字符串中的日期 // 指定日期为 NSString *time = @"2022/05/01 13:30"; // 创建日期格式化对象 NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init]; // 格式化日期 formatter2.dateFormat = @"yyyy/MM/dd HH:mm"; NSDate *date2 = [formatter2 dateFromString:time]; NSLog(@"%@", date2);
时间: 2024-10-25 05:49:50