Objective-c 之Foundation之NSNumber ,NSValue, NSDate

1、NSNumber具体用法如下:

在Objective-c中有int的数据类型,那为什么还要使用数字对象NSNumber。这是因为很多类(如NSArray)都要求使用对象,而int不是对象。
NSNumber就是数字对象,我们可以使用NSNumber对象来创建和初始化不同类型的数字对象。

此外,还可以使用实例方法为先前分配的NSNumber对象设定指定的值,这些都是以initWith开头,比如initWithLong。

如:

创建和初始化类方法 初始化实例方法 取值实例方法
numberWithChar: initWithChar: charValue
numberWithShort: initWithShort: shortValue
... ... ...
 1 void test()
2 {
3 NSNumber *num = [NSNumber numberWithInt:10];
4
5 NSDictionary *dict = @{
6 @"name" : @"jack",
7
8
9 @"age" : num
10
11 };
12
13 NSNumber *num2 = dict[@"age"];
14
15
16 int a = [num2 intValue];
17
18 NSLog(@"%d" , a);
19 }
 1 #import <Foundation/Foundation.h>
2
3 int main()
4 {
5 // @20 将 20包装成一个NSNumber对像
6
7
8 NSArray *array = @[
9
10 @{@"name" : @"jack", @"age" : @20},
11
12 @{@"name" : @"rose", @"age" : @25},
13
14 @{@"name" : @"jim", @"age" : @27}
15 ];
16
17
18 // 将各种基本数据类型包装成NSNumber对象
19 @10.5;
20 @YES;
21 @'A'; // NSNumber对象
22
23 @"A"; // NSString对象
24
25
26
27 // 将age变量包装成NSNumber对象
28 int age = 100;
29 @(age);
30 //[NSNumber numberWithInt:age];
31
32
33 NSNumber *n = [NSNumber numberWithDouble:10.5];
34
35
36 int d = [n doubleValue];
37
38
39
40 int a = 20;
41
42 // @"20"
43 NSString *str = [NSString stringWithFormat:@"%d", a];
44 NSLog(@"%d", [str intValue]);
45
46 return 0;
47 }

2、NSValue具体用法:

 NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue

 1 #import <Foundation/Foundation.h>
2
3
4 int main()
5 {
6
7 // 结构体--->OC对象
8
9 CGPoint p = CGPointMake(10, 10);
10 // 将结构体转为Value对象
11 NSValue *value = [NSValue valueWithPoint:p];
12
13 // 将value转为对应的结构体
14 // [value pointValue];
15
16 NSArray *array = @[value ];
17
18
19 20
21 return 0;
22 }

3、NSDate具体用法如下代码:

 1 void use()
2 {
3 // 创建一个时间对象
4 NSDate *date = [NSDate date];
5 // 打印出的时候是0时区的时间(北京-东8区)
6 NSLog(@"%@", date);
7
8 NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];
9
10
11 // 从1970开始走过的秒数
12 NSTimeInterval seconds = [date2 timeIntervalSince1970];
13
14 // [date2 timeIntervalSinceNow];
15 }

日期格式化:

 1 void date2string()
2 {
3 NSDate *date = [NSDate date];
4
5
6 // 日期格式化类
7 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
8
9 // y 年 M 月 d 日
10 // m 分 s 秒 H (24)时 h(12)时
11 formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; //HH /hh 24小时致/12小时制
12
13 NSString *str = [formatter stringFromDate:date];
14
15 NSLog(@"%@", str);
16 }
 1 void string2date()
2 {
3 // 09/10/2011
4 NSString *time = @"2011/09/10 18:56";
5
6 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
7 formatter.dateFormat = @"yyyy/MM/dd HH:mm";
8
9 NSDate *date = [formatter dateFromString:time];
10 NSLog(@"%@", date);
11 return 0;
12 }

黑马程序员_ Objective-c 之Foundation之NSNumber ,NSValue, NSDate的更多相关文章

  1. 大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17

    黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目 ...

  2. 2016年8月17日 内省(1)18_黑马程序员_使用beanUtils操纵javabean

    8.内省(1):18_黑马程序员_使用beanUtils操纵javabean 1.导入两个包: 2.调用静态方法. 9.泛型 map.entrySet() :取出map集合的键值对组成一个set集合. ...

  3. 黑马程序员_高新技术之javaBean,注解,类加载器

    ----------- android培训.java培训.java学习型技术博客.期待与您交流! ---------- 第一部分 javaBean 一,由内省引出javaBean 1,内省: 内省对应 ...

  4. 黑马程序员_ JAVA中的多线程

    ------- android培训.java培训.期待与您交流! ---------- 尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的. 本来打算用一节 ...

  5. JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典

    总结: 记住:servlet对象在应用程序运行的过程中只创建一次,浏览器每次访问的时候,创建reponse对象 request对象,然后调用servlet的service方法,reponse对象和re ...

  6. 黑马程序员_ Objective-c 之Foundation笔记(二)

    NSArray NSArray的创建 NSArray *array = [NSArray arrayWithObject:@“jack”]   创建单个元素 NSArray *array3 = [NS ...

  7. 黑马程序员_ Objective-c 之Foundation笔记(一)

    结构体  NSRange: 用来表示范围 创建 NSRange r1 = {2, 4} NSRange r2 = {.location = 2, .length = 4} NSRange r3 = N ...

  8. 黑马程序员_ Objective-c 面向对象笔记详解

    1)类,对象,方法 类 类名: 1) 类名的第一个字母必须是大写 2) 不能有下划线 3) 多个英文单词,用驼峰标识 类的声明和实现 类的声明 @interface 类名 : NSObject { @ ...

  9. 黑马程序员_ Objective-c 概述及面向对象与三大特性

    -----------android培训.java培训.java学习型技术博客.期待与您交流!------------ (一).语法概述 1. oc介绍:(.m文件) 1> c语言的基础上,增加 ...

随机推荐

  1. JavaScript 获取数组中最大值、最小值

    笨方法 Array.prototype.max = function() { var max = this[0]; var len = this.length; for (var i = 1; i & ...

  2. Mac安装GitLab CE记录

    0 REF REF1 原始的GitLab Documentation REF2 Installation-guide-for-GitLab-on-OS-X REF3 如何在Mac 终端升级ruby版本 ...

  3. 根据内存布局定位的一个fastdfs坑

    在使用fastdfs时,编写数据上传代码时,遇到一个坑.最终根据指针对应的内存布局定位到一个其client API的一个坑,值得记录一下.具体是在 tracker_connect_server() 这 ...

  4. PHP 下option selected 无效

    针对于PHP 下的selected="selected" 赋值无效 <select autocomplete="off" ></select& ...

  5. android studio 中 添加.so 文件

    传送门: http://jingyan.baidu.com/article/e3c78d644baaf23c4d85f57d.html 注意在Build.gradle中 添加的位置

  6. 【转载】关于OpenGL的图形流水线

    本文转载自 http://blog.csdn.net/racehorse/article/details/6593719 GLSL教程 这是一些列来自lighthouse3d的GLSL教程,非常适合入 ...

  7. Quartz2D之生成圆形头像、打水印、截图三种方法的封装

    我给UIImage类添加了一个类目,用于封装三个方法,每个方法都没有难度,做这个主要为了练习一下封装: 首先在类目.h文件中声明三个方法:以及创建了一个枚举.用于水印方法中设定水印位置:方法说明和参数 ...

  8. Caffe+CUDA7.5+CuDNNv3+OpenCV3.0+Ubuntu14.04 配置参考文献 以及 常见编译问题总结

    Caffe+CUDA7.5+CuDNNv3+OpenCV3.0+Ubuntu14.04  配置参考文献 ---- Wang Xiao Warning: Please make sure the cud ...

  9. 安装第三方Python模块,增加InfoPi的健壮性

    这3个第三方Python模块是可选的,不安装的话InfoPi也可以运行. 但是如果安装了,会增加InfoPi的健壮性. 目录 1.cchardet    自动检测文本编码 2.lxml    用于解析 ...

  10. 使用zfs进行pg的pitr恢复测试

    前段时间做了一下zfs做pg的增量恢复测试,mark一下. 服务器信息: 主机:192.168.173.43 备机:192.168.173.41 主备使用流复制搭建,在备机上面进行了zfs快照备份. ...