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与笑笑语法的更多相关文章

  1. iOS系列 基础篇 09 开关、滑块和分段控件

    iOS系列 基础篇 09 开关.滑块和分段控件 目录: 案例说明 开关控件Switch 滑块控件Slider 分段控件Segmented Control 1. 案例说明 开关控件(Switch).滑块 ...

  2. 鸟哥Linux私房菜基础学习篇学习笔记2

    鸟哥Linux私房菜基础学习篇学习笔记2 第九章 文件与文件系统的压缩打包: Linux下的扩展名没有什么特殊的意义,仅为了方便记忆. 压缩文件的扩展名一般为: *.tar, *.tar.gz, *. ...

  3. python-基础学习篇(一)

    python基础学习(一) 不积硅步,无以至千里.基础的学习越加透彻,才能更清楚的理解和分析需求,我贯彻基础学习“永无止境”的理念,故把自学的知识梳理在博客中,基础学习篇无限更新. python介绍 ...

  4. OC学习篇之---总结和学习目录

    今天终于把OC的基础知识学习完了,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.下面就是这次学习OC的目录教程,如果大家发现有什么不正确的地方,请指正,小弟是新生 ...

  5. js学习篇1--数组

    javascript的数组可以包含各种类型的数据. 1. 数组的长度 ,直接用 length 属性; var arr=[1,2,3]; arr.length; js中,直接给数组的length赋值是会 ...

  6. Tomcat集群配置学习篇-----分布式应用

    Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...

  7. (转载)OC学习篇之---概述

    前言 终于开启了OC的学习篇了,之前由于工作上的事,学习就一直搁浅了,不过最近由于各种原因,感觉必须要开启iOS的开发旅程了,不然就老了.因为之前一直是做Android的,所以学习iOS来就没那么费劲 ...

  8. 《Mysql 公司职员学习篇》 第二章 小A的惊喜

          第二章 小A的惊喜  ---- 认识数据库 吃完饭后,小Y和小A回到了家里,并打开电脑开始学习Mysql. 小Y:"小A,你平时的Excell文件很多的情况下,怎么样存放Exce ...

  9. Java多线程(学习篇)

    Java多线程:(学习篇) 1.什么是线程 2.线程状态 3.线程中断 4.线程交互 5.同步机制 6.锁机制 7.堵塞队列与堵塞栈 8.条件变量.原子量.线程池等 9.线性安全类和Callable与 ...

随机推荐

  1. iOS证书快要过期怎么办?

    说法一: 1.先revoke你的Certificate,重新生成一个新的. 2.Edit一下你的证书,选择新的Certificate. 3.下载覆盖之前的证书,就可以了. 这个帐号发布的产品不会受到影 ...

  2. IDF 实验室部分题目WriteUp

    前天花了一个下午的时间刷了几道IDF实验室的题目, 这个网站实在是有点冷清, 题目也比较少, 所以就被我和师兄们刷榜了2333... 因为我最先开始做, 所以就干脆刷到第一去了. 题目很水, 切莫见怪 ...

  3. Netbeans8下 Weblogic EJB案例

    1:接口 @Remote public interface XgmZzsNssb {} 2:实现 @Stateless(mappedName="XgmZzsNssbImpl") @ ...

  4. 使用 Spring Boot 快速构建 Spring 框架应用,PropertyPlaceholderConfigurer

    Spring 框架对于很多 Java 开发人员来说都不陌生.自从 2002 年发布以来,Spring 框架已经成为企业应用开发领域非常流行的基础框架.有大量的企业应用基于 Spring 框架来开发.S ...

  5. flex中validateall()方法, 多Item验证 ,结果统一提示

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  6. yui--datatable 更新table数据

    使用render可以重新渲染datatable,之前添加的样式等信息也想相应会初始化,另外行定位等也会失效 使用updateRows方法不会删除样式等信息 更新datasource中_oData数据 ...

  7. 编写高质量js代码

    原文链接:http://code.tutsplus.com/tutorials/24-javascript-best-practices-for-beginners--net-5399 jquery代 ...

  8. centos 64bit 安装与升级 chrome的方法

    vim /etc/yum.repos.d/CentOS-Base.repo 根据你的系统增加一个节点 [google64] name=Google - x86_64 baseurl=http://dl ...

  9. [Design Pattern] Filter Pattern 简单案例

    Filter Pattern,即过滤模式,通过不同的过滤标准,或者低耦合将过滤标准组合在一起,对一组对象进行过滤,属于结构类的设计模式. 下面是一个过滤模式的简单案例. Criteria 定义过滤接口 ...

  10. 使用 Docker 容器应该避免的 10 个事情

    当你最后投入容器的怀抱,发现它能解决很多问题,而且还具有众多的优点: 第一:它是不可变的 – 操作系统,库版本,配置,文件夹和应用都是一样的.您可以使用通过相同QA测试的镜像,使产品具有相同的表现. ...