Objective-C学习篇09—NSNumber与笑笑语法
NSNumber
由于数组,字典,集这三个容器中只能存放对象类型的数据,如果想把基本数据类型的数据存放到这三个容器中,需要把基本数据类型转化为对象类型,此时就要借助于NSNumber 这个类.
NSNumber 继承自NSValue, 数字类,主要的作用是将基本数据类型转换为NSNumber对象类型,也能将对象类型转换为基本数据类型
整型
; 创建NSnumber对象 numberWithInt: NSNumber *intNumber = [NSNumber numberWithInt:a]; 即实现了将基本数据类型转化为对象类型 NSLog(@"intNumber = %@", intNumber); 反之,将对象类型转换为基本数据类型 .intValue int b = intNumber.intValue; // 属性,相当于 [intNumber intvalue]; NSLog(@"b = %d", b);
2015-12-04 13:06:17.252 OCNSNumber[1659:136457] intNumber = 100
2015-12-04 13:06:17.253 OCNSNumber[1659:136457] b = 100
浮点型
float c = 3.14;
NSNumber *floatNumber = [NSNumber numberWithFloat:c]; numberWithFloat:
NSLog(@"floatNumber = %@", floatNumber);
float d = floatNumber.floatValue; floatValue
NSLog(@"d = %.2f", d);
字符型
char e = 'a';
字符类型的转化为数字对象 numberWithChar:
NSNumber *charNumber = [NSNumber numberWithChar:e];
NSLog(@"charNumber = %@", charNumber);
char f = charNumber.charValue; .charValue
NSLog(@"f = %c", f);
短整型
;
NSNumber *shortNumber = [NSNumber numberWithLong:g]; numberWithLong:
NSLog(@"shortNumber = %@", shortNumber);
short h = shortNumber.shortValue; .shortValue
NSLog(@"h = %d", h);
小练习
// , n2 = , n3 = , n4 = ;
要求:将上面四个变量放到数组对象中,然后排序
// 转化为对象类型
NSNumber *m1 = [NSNumber numberWithInt:n1];
NSNumber *m2 = [NSNumber numberWithInt:n2];
NSNumber *m3 = [NSNumber numberWithInt:n3];
NSNumber *m4 = [NSNumber numberWithInt:n4];
// 装进数组对象中
NSArray *array = [NSArray arrayWithObjects:m1, m2, m3, m4, nil];
// 对数组对象中的元素进行排序
NSArray *sortArray = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@", sortArray);
2015-12-04 13:15:23.908 OCNSNumber[1667:140688] (
10,
15,
18,
22
)
总结: 基本数据类型转化为对象: 使用 [NSNumber numberWith+基本数据类型的类型名];反之,将对象类型转化为基本数据类型: 基本数据类型+Value;
笑笑语法
下面是关于一些笑笑语法的使用
笑笑语法,也就是字面量,是一种简洁表示数据的方式
1.对象数据类型的数据表示可以直接使用 @
比如: 拿100 来讲,一般的做法是:
NSNumber *number = [NSNumber numberWithInt:100];
NSLog(@"%@", number);
使用笑笑语法可以这样打印对象
NSLog(@"%@", @100);
2. 不可变数组的笑笑语法 使用 @[ ] 中括号中放对象
NSArray *nameArray2 = @[@"zhangSan", @"liSi", @"wangEr"];
NSLog(@"%@", nameArray2);
3. 可变数组笑笑语法 @[].mutableCopy;
NSMutableArray *mArray2 = @[@"1", @"2", @"3"].mutableCopy; // 可变的都加 .mutableCopy
NSLog(@"%@", mArray2);
4. 使用笑笑语法直接通过数组名加下标进行赋值
mArray2[0] = @100;
NSLog(@"%@", mArray2);
/*
2015-12-04 13:27:55.632 OCNSNumber[1690:146656] (
100,
2,
3
)
*/
5. 字典的笑笑语法
通常
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaoZe", @"1", @"kunLing", @"2", @"sunLi", @"3", nil];
NSLog(@"%@", dic);
笑笑语法 @{ 键:值,... };
NSDictionary *dic2 = @{@"1":@"xiaoZe", @"2":@"kunLing", @"3":@"sunLi"};
NSLog(@"%@", dic2);
6. 可变字典(只有可变才能修改) @{键:值,...}.mutableCopy
NSMutableDictionary *mDic = @{@"1":@"a", @"2":@"b", @"3":@"c"}.mutableCopy;
NSLog(@"%@", mDic);
[mDic setObject:@"A" forKey:@"1"];
NSLog(@"%@", mDic);
7. 修改key值对应的value值
mDic[@"2"] = @"L";
NSLog(@"%@", mDic);
NSString *value = [mDic objectForKey:@"2"];
NSLog(@"%@", value);
8.取出key值对应的value
NSLog(@"%@", mDic[@"3"]);
本节打印结果:
2015-12-04 13:31:10.137 OCNSNumber[1700:148140] intNumber = 100
2015-12-04 13:31:10.138 OCNSNumber[1700:148140] b = 100
2015-12-04 13:31:10.138 OCNSNumber[1700:148140] floatNumber = 3.14
2015-12-04 13:31:10.138 OCNSNumber[1700:148140] d = 3.14
2015-12-04 13:31:10.139 OCNSNumber[1700:148140] charNumber = 97
2015-12-04 13:31:10.139 OCNSNumber[1700:148140] f = a
2015-12-04 13:31:10.139 OCNSNumber[1700:148140] shortNumber = 10
2015-12-04 13:31:10.139 OCNSNumber[1700:148140] h = 10
2015-12-04 13:31:10.139 OCNSNumber[1700:148140] (
10,
15,
18,
22
)
2015-12-04 13:31:10.139 OCNSNumber[1700:148140] 100
2015-12-04 13:31:10.140 OCNSNumber[1700:148140] 100
2015-12-04 13:31:10.140 OCNSNumber[1700:148140] (
zhangSan,
liSi,
wangEr
)
2015-12-04 13:31:10.140 OCNSNumber[1700:148140] (
1,
2,
3
)
2015-12-04 13:31:10.140 OCNSNumber[1700:148140] (
100,
2,
3
)
2015-12-04 13:31:10.140 OCNSNumber[1700:148140] {
1 = xiaoZe;
2 = kunLing;
3 = sunLi;
}
2015-12-04 13:31:10.140 OCNSNumber[1700:148140] {
1 = xiaoZe;
2 = kunLing;
3 = sunLi;
}
2015-12-04 13:31:10.140 OCNSNumber[1700:148140] {
1 = a;
2 = b;
3 = c;
}
2015-12-04 13:31:10.141 OCNSNumber[1700:148140] {
1 = A;
2 = b;
3 = c;
}
2015-12-04 13:31:10.155 OCNSNumber[1700:148140] {
1 = A;
2 = L;
3 = c;
}
2015-12-04 13:31:10.155 OCNSNumber[1700:148140] L
2015-12-04 13:31:10.155 OCNSNumber[1700:148140] c
Objective-C学习篇09—NSNumber与笑笑语法的更多相关文章
- iOS系列 基础篇 09 开关、滑块和分段控件
iOS系列 基础篇 09 开关.滑块和分段控件 目录: 案例说明 开关控件Switch 滑块控件Slider 分段控件Segmented Control 1. 案例说明 开关控件(Switch).滑块 ...
- 鸟哥Linux私房菜基础学习篇学习笔记2
鸟哥Linux私房菜基础学习篇学习笔记2 第九章 文件与文件系统的压缩打包: Linux下的扩展名没有什么特殊的意义,仅为了方便记忆. 压缩文件的扩展名一般为: *.tar, *.tar.gz, *. ...
- python-基础学习篇(一)
python基础学习(一) 不积硅步,无以至千里.基础的学习越加透彻,才能更清楚的理解和分析需求,我贯彻基础学习“永无止境”的理念,故把自学的知识梳理在博客中,基础学习篇无限更新. python介绍 ...
- OC学习篇之---总结和学习目录
今天终于把OC的基础知识学习完了,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.下面就是这次学习OC的目录教程,如果大家发现有什么不正确的地方,请指正,小弟是新生 ...
- js学习篇1--数组
javascript的数组可以包含各种类型的数据. 1. 数组的长度 ,直接用 length 属性; var arr=[1,2,3]; arr.length; js中,直接给数组的length赋值是会 ...
- Tomcat集群配置学习篇-----分布式应用
Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...
- (转载)OC学习篇之---概述
前言 终于开启了OC的学习篇了,之前由于工作上的事,学习就一直搁浅了,不过最近由于各种原因,感觉必须要开启iOS的开发旅程了,不然就老了.因为之前一直是做Android的,所以学习iOS来就没那么费劲 ...
- 《Mysql 公司职员学习篇》 第二章 小A的惊喜
第二章 小A的惊喜 ---- 认识数据库 吃完饭后,小Y和小A回到了家里,并打开电脑开始学习Mysql. 小Y:"小A,你平时的Excell文件很多的情况下,怎么样存放Exce ...
- Java多线程(学习篇)
Java多线程:(学习篇) 1.什么是线程 2.线程状态 3.线程中断 4.线程交互 5.同步机制 6.锁机制 7.堵塞队列与堵塞栈 8.条件变量.原子量.线程池等 9.线性安全类和Callable与 ...
随机推荐
- ExtJS5_MVVM特性的简单说明
下面我们来看一下自动生成的代码中的MVVM架构的关系.Main是一个可视的控件,MainController是这个控件的控制类,MainModel是这个控件的模型类. 在上面的图片中,左边是Main. ...
- 上海招聘FPGA讲师(专兼职均可)
上海招聘FPGA讲师(专兼职均可) 招聘FPGA培训讲师(专兼职均可) 诚聘FPGA培训讲师_软件无线电方向 ◆精通FPGA设计方法及技巧 ◆精通无线电知识及System View设计方法,有基于Sy ...
- API风格
Client------------ Request ----------------->多Server端 Server------------------------------------- ...
- Keil C51中变量的使用
引言 8051内核单片机是一种通用单片机,在国内占有较大的市场份额.在将C语言用于51内核单片机的研究方面,Keil公司做得最为成功.由于51内核单片机的存储结构的特殊性,Keil C51中变量的使用 ...
- linux浏览器,邮件客户端,输入法,双屏设置,应用软件,scrot -s截图,office
搜狗输入法linux版:http://pinyin.sogou.com/linux/help.php win/linux同时支持比较好用的浏览器:maxthon,firefox,maxthon,ope ...
- POJ2524 Ubiquitous Religions(并查集)
题目链接. 分析: 给定 n 个点和 m 条无项边,求连通分量的数量.用并查集很简单. #include <iostream> #include <cstdio> #inclu ...
- Codeforces Round #312 (Div. 2) A.Lala Land and Apple Trees
Amr lives in Lala Land. Lala Land is a very beautiful country that is located on a coordinate line. ...
- c# WinForm开发 DataGridView各种操作总结大全
一.单元格内容的操作 //取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index Consol ...
- python爬虫__第一个爬虫程序
前言 机缘巧合,最近在学习机器学习实战, 本来要用python来做实验和开发环境 得到一个需求,要爬取大众点评中的一些商户信息, 于是开启了我的第一个爬虫的编写,里面有好多心酸,主要是第一次. 我的文 ...
- Oracle sqlplus 语法
目录: 0. FREFACE 1. 执行一个SQL脚本文件 2. 对当前的输入进行编辑 3. 重新运行上一次运行的sql语句 4. 将显示的内容输出到指定文件 5. 关闭spool输出 6.显示一个表 ...