黑马程序员_ Objective-c 之Foundation之NSNumber ,NSValue, NSDate
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的更多相关文章
- 大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17
黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目 ...
- 2016年8月17日 内省(1)18_黑马程序员_使用beanUtils操纵javabean
8.内省(1):18_黑马程序员_使用beanUtils操纵javabean 1.导入两个包: 2.调用静态方法. 9.泛型 map.entrySet() :取出map集合的键值对组成一个set集合. ...
- 黑马程序员_高新技术之javaBean,注解,类加载器
----------- android培训.java培训.java学习型技术博客.期待与您交流! ---------- 第一部分 javaBean 一,由内省引出javaBean 1,内省: 内省对应 ...
- 黑马程序员_ JAVA中的多线程
------- android培训.java培训.期待与您交流! ---------- 尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的. 本来打算用一节 ...
- JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典
总结: 记住:servlet对象在应用程序运行的过程中只创建一次,浏览器每次访问的时候,创建reponse对象 request对象,然后调用servlet的service方法,reponse对象和re ...
- 黑马程序员_ Objective-c 之Foundation笔记(二)
NSArray NSArray的创建 NSArray *array = [NSArray arrayWithObject:@“jack”] 创建单个元素 NSArray *array3 = [NS ...
- 黑马程序员_ Objective-c 之Foundation笔记(一)
结构体 NSRange: 用来表示范围 创建 NSRange r1 = {2, 4} NSRange r2 = {.location = 2, .length = 4} NSRange r3 = N ...
- 黑马程序员_ Objective-c 面向对象笔记详解
1)类,对象,方法 类 类名: 1) 类名的第一个字母必须是大写 2) 不能有下划线 3) 多个英文单词,用驼峰标识 类的声明和实现 类的声明 @interface 类名 : NSObject { @ ...
- 黑马程序员_ Objective-c 概述及面向对象与三大特性
-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ (一).语法概述 1. oc介绍:(.m文件) 1> c语言的基础上,增加 ...
随机推荐
- Tomcat笔记
总体架构: 由三部分组成:Service.Connector.Container 多个Connector对应一个Container,构成一个Service 为Service提供一个生存环境 如何处理多 ...
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问
消息 15281,级别 16,状态 1,第 2 行SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/Open ...
- JDBC查询数据库中的数据
只用JDBC技术查询表中的全部内容时,需要使用查询全部的SQL语句,把查询结果放到List集合中. package qddx.JDBC; import java.util.*; import java ...
- 交换技术(swaping) 视频11
进程挂起的原因 1)进程全部阻塞,处理机空闲 2)系统负荷过重,内存空间紧张 3)操作系统需要,操作系统可能挂起后台进程或者一些服务进程(后台进程 优先级比 前天进程低),或者可能导致系统故障的进程 ...
- CDN 学习笔记
目前常用的存储技术方案有:共享式存储.本地附加存储和分布式文件系统服务方式. 共享式存储:设备性能好,稳定和可靠性高,但投入资本较高,而采用分布文件系统方式可以基于廉价存储介质提供大容量.高性能高可靠 ...
- CSS code
body{ background-color: #1b1919; background-image: url(); } #blog_nav_rss, #blog_nav_rss_image{ disp ...
- EF6 连接Oracle 迁移数据错误解决方法
环境:vs2015 + EF6 +ODP 数据库Oracle 11G add-migratioin 正常,但在update-database 时报如下错误: System.Runtime.Serial ...
- 【HDU1257】最少拦截系统(贪心)
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- malloc分配的内存空间是连续的吗
1.linux内核管理内存空间的分配,所有程序对内存空间的申请和其他操作,最终都会交给内核来管理. 2.linux实现的是“虚拟内存系统”,对用户而言,所有内存都是虚拟的,也就是说程序并不是直接运行在 ...
- C# WebApi 请求方式Post,返回Response
1.[FromBody]属性只能用在一个参数上,当Body中有多个参数要定义类型.一个参数的时候 key="",value="123",key为空才能取到值. ...