Objective-C( Foundation框架 一 NSNumber(NSValue))
NSNumber: 是OC中处理数字的一个类
NSValue是NSNumber的子类
如何处理:
把int,float,double 包装成一个对象
使用NSNumber的好处:
可以把基本数据类型的数据,保存到数组或字典中
// 定义基本数据类型
int a = ;
float b = 2.2f;
double d = 1.22; int x = ; // int 包装成 NSNumber
NSNumber *intObj = [NSNumber numberWithInt:a];
NSMutableArray *array = [NSMutableArray arrayWithObjects: intObj, nil]; // float 包装成 NSNumber
NSNumber *floatObj = [NSNumber numberWithFloat:b];
// 把对象添加到数组中
[array addObject:floatObj]; // double 包装成 NSNumber
NSNumber *doubleObj = [NSNumber numberWithDouble:d];
// 把对象添加到数组中
[array addObject:doubleObj]; // @数值,把数值包装成对象,快速简单的方法
[array addObject:@(x)];
NSLog(@"%@",array); // 数组的第一个元素和第二个元素相加
NSNumber *n1 = array[]; // 取出第0位元素
int a1 = [n1 intValue];
NSNumber *n2 = array[]; // 取出第1位元素
float a2 = [n2 floatValue]; //a1 = a1+a2;
// 简洁
a1 = [array[] intValue] +[array[] floatValue];
NSLog(@"%d",a1);
NSValue:主要是用来把指针,CGRect结构体等包装成OC对象,以便储存
CGPoint p1 = CGPointMake(, );
CGRect r1 = CGRectMake(, , , );
NSMutableArray *arr = [NSMutableArray array];
// p1包装成 obj
NSValue *pointValue = [NSValue valueWithPoint:p1]; // 把对象存到数组中
[arr addObject:pointValue];
// 把r1 包装成 NSValue对象
[arr addObject:[NSValue valueWithRect:r1]];
NSLog(@"%@",arr); // 取出r1 的值
NSValue *r1Value = [arr lastObject];
NSRect r2 = [r1Value rectValue]; NSLog(@"%@", NSStringFromRect(r2));
包装struct
// 定义日期结构体
typedef struct Date
{
int year;
int month;
int day; } MyDate;
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 年—月-日
MyDate nyr = {, , }; // @encode(MyDate)作用,把MyDate类型生成一个常量字符串描述
NSValue *val = [NSValue valueWithBytes:&nyr objCType:@encode(MyDate)]; // 定义一个数组,把val存到数组中
NSMutableArray *arr = [NSMutableArray arrayWithObject:val];
/*
从数组中取出来NSValue对象
从对象中,取出结构体变量的值
传入一个结构体变量的地址
*/
MyDate tmd;
[val getValue:&tmd];
NSLog(@"%d, %d. %d",tmd.year, tmd.month, tmd.day);
Objective-C( Foundation框架 一 NSNumber(NSValue))的更多相关文章
- Objective - c Foundation 框架详解2
Objective - c Foundation 框架详解2 Collection Agency Cocoa provides a number of collection classes such ...
- Objective-C:Foundation框架-常用类-NSValue
NSNumber是NSValue的子类,前者只能包装数字,后者可以包装任意值.NSArray.NSDictionary只能存储OC对象,不能存储结构体.因此,如果想要在NSArray.NSDictio ...
- [OC Foundation框架 - 12] NSNumber
1.概念 NSArray,NSDictionary只能放OC对象,不能放入基本数据类型 必须使用包装类NSNumber,把基本数据类型包装成OC对象 不支持自动包装解包 void number() ...
- iOS Foundation框架 -3.利用NSNumber和NSValue将非OC对象类型数据存放到集合
1.Foundation框架中提供了很多的集合类如:NSArray,NSMutableArray,NSSet,NSMutableSet,NSDictionary,NSMutableDictionary ...
- (转载)OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)
前一篇说到了Foundation框架中的NSDirctionary类,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSException. 注:其实按照Java ...
- OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)
1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于J ...
- Foundation框架下的常用类:NSNumber、NSDate、NSCalendar、NSDateFormatter、NSNull、NSKeyedArchiver
========================== Foundation框架下的常用类 ========================== 一.[NSNumber] [注]像int.float.c ...
- 黑马程序员_ Objective-c 之Foundation之NSNumber ,NSValue, NSDate
Objective-c 之Foundation之NSNumber ,NSValue, NSDate 1.NSNumber具体用法如下: 在Objective-c中有int的数据类型,那为什么还要使用数 ...
- Foundation框架中的NSNumber对象详解
到目前为止,我们所讨论过的所有数字数据类型,如int型.float型和long型都是Objective-C语言中的基本数据类型,也就是说,它们都不是对象.例如,不能向它们发送消息.然而,有时需要作为对 ...
随机推荐
- C语言-Hello, world
你好, 世界 --1-- 语言的编写准备 1.1 C语言源文件的编译执行过程 1.2 常见文件的拓展名 1.3 常用的命令行指令 1.4 环境及运行方法 --2--编写代码 2.1练习 --3-- ...
- 关键字nullable,nonnull,null_resettable,_Null_unspecified详解
相信在开发过程中,很多小伙伴们儿都会见到nullable,nonnull,null_resettable,_Null_unspecified这几个关键字,但是并不知道它们是什么意思,下面我就给大家一一 ...
- EF之ExecuteSqlCommand更新出现无效的解决方案
本篇文章将会剖析为什么会出现这一现象.以及解决的办法 先来看一下代码 public static TResult AddTest() { TestDAL testdal = DALFactory.Cr ...
- wkhtmltopdf 安装使用笔记(CentOS6)
1. 在官网下载安装文件. http://wkhtmltopdf.org/ 安装时如果提示某些库找不到的话,使用yum安装即可. 2. 命令行测试 $ wkhtmltopdf http://news. ...
- selenium启动Chrome浏览器和禁止证书错误提示弹出
要把ChromeDriver放到代码中的文件夹中c://*******Application public static WebDriver WebDriverRun(WebDriver driver ...
- spring mybatis 事务配置及使用
转自:http://kinglixing.blog.51cto.com/3421535/723870
- Spring事务属性的介绍
Spring声明式事务让我们从复杂的事务处理中得到解脱.使得我们再也无需要去处理获得连接.关闭连接.事务提交和回滚等这些操作.再也无需要我们在与事务相关的方法中处理大量的try-catch-final ...
- WCF入门简单教程(图文) VS2010版
在这个例子中我们将使用VS 2010 创建一个WCF服务,其中会了解 [DataContract] [ServiceContract] 等特性. 内置的 WCFSVCHost ,并使用“WCF测试客 ...
- Node聊天程序实例06:server.js
作者:vousiu 出处:http://www.cnblogs.com/vousiu 本实例参考自Mike Cantelon等人的<Node.js in Action>一书. server ...
- thinkphp的学习笔记
# Thinkphp ## 什么是框架?(框架开发)> 框架就是通过提供一个开发Web程序的基本框架(比如提供了分页类.数据库操作类.文件操作类等),使用框架可以减少开发者代码的编写.> ...