OC基础教程10-NSNumber详细

NSNumber简介

NSNumber是数字的对象形式,因为在OC的数组和字典中只允许存放对象,所以我们有时候需要转化

我们普通的类型是   123 那么 NSNumber类型的是  @123,它是一个对象

1.把int float double等类型转化为 NSNumber类型

查看系统的API我们可以看见有如下的方法可以生成NSNumber类型:

+ (NSNumber *)numberWithChar:(char)value;
+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
+ (NSNumber *)numberWithShort:(short)value;
+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
+ (NSNumber *)numberWithInt:(int)value;
+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
+ (NSNumber *)numberWithLong:(long)value;
+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
+ (NSNumber *)numberWithLongLong:(long long)value;
+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
+ (NSNumber *)numberWithFloat:(float)value;
+ (NSNumber *)numberWithDouble:(double)value;
+ (NSNumber *)numberWithBool:(BOOL)value;
+ (NSNumber *)numberWithInteger:(NSInteger)value NS_AVAILABLE(10_5, 2_0);
+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5, 2_0);

使用示例:

        //1.把 int float double转化为对应的对象类

        int aa1 = 110;
        NSNumber *aa2 = @(aa1);//直接使用@符号转化
        NSNumber *aa3 = [NSNumber numberWithInt:aa1];//使用方法转化
        float bb1 = 13.4;
        NSNumber *bb2 = [NSNumber numberWithFloat:bb1];
        NSLog(@"aa2 = %@,bb2 = %@",aa2,bb2);

2.把 NSNumber转化为普通数据类型

我们可以通过NSNumber的属性和方法来获得其内部的值

@property (readonly) char charValue;
@property (readonly) unsigned char unsignedCharValue;
@property (readonly) short shortValue;
@property (readonly) unsigned short unsignedShortValue;
@property (readonly) int intValue;
@property (readonly) unsigned int unsignedIntValue;
@property (readonly) long longValue;
@property (readonly) unsigned long unsignedLongValue;
@property (readonly) long long longLongValue;
@property (readonly) unsigned long long unsignedLongLongValue;
@property (readonly) float floatValue;
@property (readonly) double doubleValue;
@property (readonly) BOOL boolValue;
@property (readonly) NSInteger integerValue NS_AVAILABLE(10_5, 2_0);
@property (readonly) NSUInteger unsignedIntegerValue NS_AVAILABLE(10_5, 2_0);

@property (readonly, copy) NSString *stringValue;

使用示例:

   //2.获取NSNumber中的数字值
        NSNumber *cc1 = @123;
        int cc2 = [cc1 intValue];//获取整数值

        NSNumber *dd1 = @123.456;
        double dd2 = [dd1 doubleValue];//获取double值
        double dd3= dd1.intValue;//属性方式

3.NSNumber之间的比较

- (NSComparisonResult)compare:(NSNumber *)otherNumber;

- (BOOL)isEqualToNumber:(NSNumber *)number;

4.NSNumber存放到 数组 或者 字典中

        NSArray *arr = @[@1,@123,@2];
        NSNumber *num1 = arr[0];
        NSNumber *num2 = [arr objectAtIndex:1];

        NSDictionary *dic = @{@"key1":@1,@"key2":@2};
        NSNumber *nu1 = dic[@"key1"];
        NSNumber *nu2 = [dic objectForKey:@"key2"];
时间: 2024-07-31 14:26:18

OC基础教程10-NSNumber详细的相关文章

OC基础教程之基本语法

第一节总括 这一节是对Objective-C(以后简称OC)的简要介绍,目的是使读者对OC有一个概括的认识. 1.面象的读者 在阅读本文之前,应具备使用与C类似的编程语言(如C,C++,JAVA)的一些经验,同时熟悉面向对象编程. 2.OC简介 OC是以SmallTalk为基础,建立在C语言之上,是C语言的超集.20世纪80年代早期由 Brad J.Cox设计,2007年苹果公司发布了OC 2.0,并在iPhone上使用OC进行开发. 3.OC学习内容 学习的内容主要包括语法和Cocoa框架两部

OC基础数据类型之NSNumber

假如你能够很轻松的理解NSString的定义和用法,那么NSNumber的话联想一下你就大概能够明白其中的道理和关系了. 首先你必须知道C语言的基础数据类型在OC中不是所有地方都支持使用,那么碰到例如copy等不支持使用的情况,我们就必须用OC的基本数据类型了. 那么OC的基本数据类型是什么?其实它就是将C语言的数据类型全部打包封装到了一个类里面.这个类里面各种各样的C语言基础数据类型都有,例如int,float,double等 当然OC里NSNumber的功能相对要强大很多,它不仅仅包含了C的

OC基础教程

1argc为启动参数个数,因为启动参数第一个是工程名称,所以argc必大于等于1 2可以在方法中的注释哩加入以TODO: MARK: FIXME: ???:等开头的文本,这些作为程序员所做的记号放入到功能菜单中. 3runloop一直处于阻塞状态,直至某些有趣的事情发生为止. 4非正式协议是NSObject的一个类别.它能够列出对象能够响应的方法. 5文件加载与保存 6键值编码 7NSPredicate 8暴力调试:在程序中放入输出语句(如NSLog)来输出程序的控制流程和一些数据值. 10一些

PHP基础教程 10款人气暴涨的PHP开源工具

若想创建动态而又新颖的Web应用程序,PHP便是理想的选择.不用说,在Web开发世界里,PHP是最流行的语言之一.一些非常好用的PHP开源工具着实拯救了不少开发任务繁重的PHP开发 人员,减轻他们的开发负担.这些PHP开源工具改善了他们的工作流程,使他们的开发任务更简便和快捷.本人整理了 10 款最具人气的PHP开源工具分享给大家,欢迎交流分享.www.lampbrother.net/subject.html Monsta FTP 如果你想在浏览器中设置一个FTP文件管理,你需要有一款像Mons

计算机基础教程10 - 操作系统

操作系统是一个具有以下功能的程序 - 操作系统是充当软件和计算机硬件之间的接口的程序. 它是一组集成的专用程序,用于管理计算机的整体资源和操作. 它是一种专用软件,用于控制和监视驻留在计算机中的所有其他程序的执行,包括应用程序和其他系统软件. 操作系统的目标 操作系统的目标是 - 使计算机系统以有效的方式使用方便. 从用户隐藏硬件资源的详细信息. 为用户提供方便的界面来使用计算机系统. 充当硬件与其用户之间的中介,使用户更容易访问和使用其他资源. 管理计算机系统的资源. 跟踪谁正在使用哪个资源,

python入门基础教程10 python的分支语句

if分支语句 分支语句的作用是在某些条件控制下有选择的执行实现一定功能语句块.if 分支语句则是当if后的条件满足时,if 下的语句块被执行,语法格式如下所示: if <condition>:     statements 让我们看看代码吧. >>> sex = 'male' >>> if sex == 'male':      print 'Man!'#此处有两次回车键 Man! >>> if sex == 'female':      

cocos基础教程(10)纹理缓存技术

Cocos2d通过调用CCTextureCache或者CCSpriteFrameCache来缓存精灵的纹理. 当这个精灵调用CCTextureCache 或 CCSpriteFrameCache的方法的时候,cocos2dx将使用纹理缓存来创建一个CCSprite.所以你可以预先将纹理加载到缓存中,这样你在场景中使用的时候就非常方便了.怎么样加载这些纹理就看你自己的想法.例如,你可以选择异步加载方式,这样你就可以为loading场景增加一个进度条. 当你创建一个精灵,你一般会使用CCSprite

OC基础教程11-结构体对象NSValue与NSString之间的转换

NSValue简介 NSValue是结构体的对象类型,它为我们封装了一系列的很好的方法 可以方便的把结构体转为对象类型 1.把普通的结构体转化为NSValue类型 + (NSValue *)valueWithPoint:(NSPoint)point; + (NSValue *)valueWithSize:(NSSize)size; + (NSValue *)valueWithRect:(NSRect)rect; + (NSValue *)valueWithEdgeInsets:(NSEdgeIn

SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章)

SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章) 示例数据库:点我 CHAPTER 08 数据修改 8.1 插入数据 8.1.1 INSERT VALUES 语句 8.1.2 INSERT SELECT 语句 8.1.3 INSERT EXEC 语句 8.1.4 SELECT INTO 语句 8.1.5 BULK INSERT 语句 8.1.6 标识列属性和序列对象 8.1.6.1 标识列属性 8.1.6.2 序列对象 8.2 删除数据 8.2.1 DELETE 语