黑马程序员-OC学习笔记之Foundation框架NSNumber、NSValue和NSDate

来源:互联网 发布:vscode css3前缀插件 编辑:程序博客网 时间:2024/06/05 09:41
---------------------- IOS开发、Android培训、期待与您交流! ----------------------
一、NSNumber
        前几篇笔记中,小桥复习了Foundatio框架中的几个类,这三个是OC学习的尾声了。 小桥已经复习过OC数组类NSArray,也说过它只能存放OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int、float,结构体存放的OC数组中,怎么办?这里的NSNumber就有用了,它能够把基本数据类型包装成OC对象。
[objc] view plaincopy
  1. // 将整形包装成OC对象  
  2.    NSNumber *num1 = [NSNumber numberWithInt:120];  
  3.    // 将浮点形包装成OC对象  
  4.    NSNumber *num2 = [NSNumber numberWithDouble:0.5];  
  5.      
  6.    // 把包装后的数据存放到OC数组中  
  7.    NSArray *array = @[@"年龄",num1];  
  8.      
  9.    // 遍历数组  
  10.    for (id obj in array)  
  11.    {  
  12.        NSLog(@"%@", obj);  
  13.    }       
       通过NSNumber的方法能够把所有基本数据类型包装成OC对象,再存放到OC数组中。要把NSNumber包装后的对象还原成基本数据类型,操作如下:

[objc] view plaincopy
  1. // 将NSNumber类型的对象还原成基本数据类型  
  2.     int age = [num1 intValue];  
  3.     double a = [num2 doubleValue];   
  4.         还可以 使用编译器特性快速包装一个基本数据:  
  5.     // 快速包装  
  6.     @120;  
  7.     @0.5;  
  8.     @NO;   
  9. //  
  10. //  main.m  
  11. //  NSNumber、NSValue和NSdate  
  12. //  
  13. //  Created by 葬花 桥 on 14-5-18.  
  14. //  Copyright (c) 2014年 itcast. All rights reserved.  
  15. //  
  16.   
  17. #import <Foundation/Foundation.h>  
  18.   
  19. int main()  
  20. {  
  21.     // 将整形包装成OC对象  
  22.     NSNumber *num1 = [NSNumber numberWithInt:120];  
  23.     // 将浮点形包装成OC对象  
  24.     NSNumber *num2 = [NSNumber numberWithDouble:0.5];  
  25.       
  26.     // 把包装后的数据存放到OC数组中  
  27.     NSArray *array = @[@"年龄",num1];  
  28.       
  29.     // 遍历数组  
  30.     for (id obj in array)  
  31.     {  
  32.         NSLog(@"%@", obj);  
  33.     }  
  34.       
  35.     // 将NSNumber类型的对象还原成基本数据类型  
  36.     int age = [num1 intValue];  
  37.     double a = [num2 doubleValue];  
  38.       
  39.     // 快速包装  
  40.     @120;  
  41.     @0.5;  
  42.     @NO;  
  43.       
  44.     // 使用快速包装,再存放到数组中  
  45.     NSArray *array2 = @[@"hello",@100@YES@0.3, @'H'];  
  46.       
  47.     return 0;  
  48. }   

二、NSValue
        NSValue和NSNumber相似,具体来说前者是后者的父类。NSValue可以包装复杂的基本数据类型,如结构体,枚举。

[objc] view plaincopy
  1. int main()  
  2. {  
  3.       
  4.     // OC结构体  
  5.     CGPoint point = CGPointMake(1112);  
  6.       
  7.     // 将结构体包装成OC对象  
  8.     NSValue *val = [NSValue valueWithPoint:point];  
  9.       
  10.     // 将包装后的OC对象存放到OC数组  
  11.     NSArray *array = @[val];  
  12.       
  13.     NSLog(@"%@", array);  
  14.       
  15.     return 0;  
  16. }  

 三、NSDate
        这个类是与时间相关的,这里主要复习一下日期的格式化。

   

[objc] view plaincopy
  1. // 创建日期对象  
  2.    NSDate *date = [NSDate date];  
  3.      
  4.    // 日期格式化类  
  5.    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
  6.      
  7.    // y 年  M 月  d 日  
  8.    // m 分 s 秒  H (24)时  h(12)时  
  9.    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"// 固定写法,不能随便写  
  10.      
  11.    // 将日期格式化成字符串对象  
  12.    NSString *str = [formatter stringFromDate:date];  
  13.      
  14.    NSLog(@"%@", str);  
  15.    // 格式化的参数都有固定含意,不能随意写。上面是将日期格式化输出,下面再来将字符串中的日期  
  16.    // 指定日期为  
  17.    NSString *time = @"2022/05/01 13:30";  
  18.      
  19.    // 创建日期格式化对象  
  20.    NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];  
  21.    // 格式化日期  
  22.    formatter2.dateFormat = @"yyyy/MM/dd HH:mm";  
  23.      
  24.    NSDate *date2 = [formatter2 dateFromString:time
0 0
原创粉丝点击