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语言中的基本数据类型,也就是说,它们都不是对象.例如,不能向它们发送消息.然而,有时需要作为对 ...
随机推荐
- json字符串转java对象数组
需要引入json-lib-2.2-jdk15.jar和ezmorph-1.0.6.jar包 String itemStar = request.getParameter("itemStar& ...
- JAVA 中XML的解析
XML: 可扩展标记语言(extensible Markup Language) 用于标记电子文件使其具有结构性的标记语言.XML可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定 ...
- window7 x64 path
%SystemRoot%\system32; %SystemRoot%; %SystemRoot%\System32\Wbem; %SYSTEMROOT%\System32\WindowsPowerS ...
- Eclipse通过DDMS打开真机/data/data/目录
一般真机调试时DDMS里面的File Explorer是不能打开/data 目录的,不过也很容易解决. 1.首先手机要root.这个很简单,网上一大堆资料和软件. 2.仅仅root之后还不行,下载一个 ...
- Bootstrap_缩略图
缩略图在网站中最常用的地方就是产品列表页面,一行显示几张图片,有的在图片底下(左侧或右侧)带有标题.描述等信息. Bootstrap框架将这一部独立成一个模块组件.并通过“thumbnail”样式配合 ...
- 集群节点间网络通信TIPC
1. TIPC背景介绍 TIPC主要是用于集群网络环境之中,它这个协议有一些前提假设包括: 协议发送的大部分message都是直接到达目的地(无路由): message的传输时间都很短; messag ...
- 谷歌input框黄色背景问题
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autof ...
- iframe在浏览器中session失效问题
iis中右击项目属性http头 添加一个http头 X-UA-Compatible 自定义http头值 IE=EmulateIE7 这样设置后就可以了
- Java资源大全中文版(Awesome最新版)(转载)
原文地址:http://www.cnblogs.com/best/p/5876559.html 目录 业务流程管理套件 字节码操作 集群管理 代码分析 编译器生成工具 构建工具 外部配置工具 约束满足 ...
- [转]抓取安卓APP内接口的方法--Charles
http://blog.csdn.net/yyh352091626/article/details/52759294