黑马程序员_ 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语言的基础上,增加 ...
随机推荐
- AIX上通过IPSEC进行IP包过滤
AIX上的IPSEC 在AIX可以通过以下步骤打开IP Security smitty ipsec4 --> Start/Stop IP Security --> Start IP Sec ...
- 关于raid的理解
缘起 公司部署业务的时候,6块盘需要做raid,以前还没有用过所以不知道,临时才去百度看了一下相关知识. 部署 当前可以用软raid与硬raid,软raid系统上建立,占用CPU与IO资源;硬RAID ...
- 嵌入式(Embedded)Neo4j数据库访问方法
应用中采用嵌入式Neo4j(Embedded Neo4j)数据库,插入数据后不知道如何访问.查询之后知道有Neoclipse这个可视化工具,最新版本是1.9.5.添加目录后报错: 应该是Neoclip ...
- 彩票号码OC呈现
+(NSArray*)splitCode:(NSString*)code backzoneIndex:(NSInteger*)outIndex { /* 01 0102|0304 0102030405 ...
- 动态生成元素动作绑定,jquery 1.9如何实现
1.7后增加了 live()1.9后被移除了 网上说可以用 on() 代替 可以实际在动态生成元素上绑定动作,没效果,求解绝方法(用低版本的jQuery这种方法,求别说..) 答: 之前有老兄回答过类 ...
- 使用bat脚本添加JAVA_HOME和修改PATH
add_jre.bat ::添加环境变量JAVA_HOME @echo off echo 添加java环境变量 set regpath=HKEY_LOCAL_MACHINE\SYSTEM\Curren ...
- 威纶触摸屏和三菱PLC3S之间的通信设置
触摸屏软件中: PLC型号:FX3U\FX3G 接口类型:RS-485 4W 端口:COM2(19200,E,7,1)
- UI崩溃的解决方案
在unity加载的时候主动强制关闭后,竟然ui崩溃,一直报错UnityEngine.UI.dll is in timestamps but is not known in assetdatabase. ...
- 判断ie版本
(function(){ var browser=navigator.appName var b_version=navigator.appVersion var version=b_version. ...
- 【转】深入 Docker:容器和镜像
在本专栏往期的 Flux7 系列教程 里,我们已经简单地探讨了 Docker 的基本操作.而在那篇教程中,我们一直是简单地将容器当成是"正在运行的镜像",并没有深入地区分镜像和容器 ...