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. js 常见弹出框学习

    模拟系统的弹出框 系统自带的弹出框 总结 链接  http://blog.csdn.net/anhuidelinger/article/details/17024491 参考这个网站学习模态框的动态弹 ...

  2. python数据结构与算法——哈希表

    哈希表 学习笔记 参考翻译自:<复杂性思考> 及对应的online版本:http://greenteapress.com/complexity/html/thinkcomplexity00 ...

  3. Python 文件操作函数

    这个博客是 Building powerful image classification models using very little data 的前期准备,用于把图片数据按照教程指示放到规定的文 ...

  4. [转]恢复 git reset -hard 的误操作

    转帖:http://hi.baidu.com/configuration/item/97fddeea252818d0eb34c964 有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 r ...

  5. java hook

    linux下 hook的触发,需要 发送信号为15. 后续补充具体内容.

  6. eclipse修改web项目部署路径

    Eclipse中用Tomcat发布的Web项目,更改其部署路径 我的Eclipse的工作目录是D:/workspace 先配置Tomcat 选择你的tomcat版本 点击next 这里先不要把项目添加 ...

  7. Roslyn 学习笔记(一)

    本文记录了Roslyn开发环境的安装与编译过程,参考了以下Roslyn项目的官方文档 https://github.com/dotnet/roslyn/blob/master/docs/contrib ...

  8. Golang里面使用protobuf(proto3)

    参考文章:https://developers.google.com/protocol-buffers/docs/gotutorial 1.执行指令: go envgo get github.com/ ...

  9. [转]js来弹出窗口的详细说明

    1.警告对话框 <script> alert("警告文字") </script> 2.确认对话框 <script> confirm(" ...

  10. MSSQL-实用小工具

    1.创建查询辅助表 create table nums (n int not null) alter table nums add constraint PK_NUMS primary key clu ...