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语言中的基本数据类型,也就是说,它们都不是对象.例如,不能向它们发送消息.然而,有时需要作为对 ...
随机推荐
- JavaScript基本数据类型(较易混淆的几个概念)
1. var a; typeof a; 控制台输出结果是什么? 解答:a只被声明,而未被初始化,在javascript中,未初始化的变量默认值都为undefined; 2. var s=" ...
- IOS UITableview代理方法总结
tableview的datasource代理 @required的两个数据源方法 1.返回每个 session 中 cell 的个数 - (NSInteger)tableView:(UITableVi ...
- css新笔记
这里的黑科技其实就是一些CSS中不怎么为人所知但在解决某些问题的时候很溜的属性. border-radius 很多开发者估计都没有正确认识这个border-radius,因为基本上很多人都是这么用的: ...
- Bootstrap_面板
一.基础面板 基础面板非常简单,就是一个div容器运用了“panel”样式,产生一个具有边框的文本显示块. 由于“panel”不控制主题颜色,所以在“panel”的基础上增加一个控制颜色的主题“pan ...
- IOS 断点下载
// // ViewController.m // UI4_断点下载 // // Created by qianfeng on 15/8/19. // Copyright (c) 2015年 ZBC. ...
- Kanzi Q&A
Q:为什么我的kanzi studio安装完后无法编译apk? A:请安装jdk,并设置环境变量,并更新thirdpartsdk. Q:为什么使用路径无法读取到列表listbox内的列表项? A:列表 ...
- CentOS6.5安装Nginx
1.安装prce(重定向支持)和openssl(https支持,如果不需要https可以不安装.) yum -y install pcre* yum -y install openssl* 2.下载n ...
- 浏览器Range,Selection等选中文本对象
Range对象 Range 对象表示文档的连续范围区域,如用户在浏览器窗口中用鼠标拖动选中的区域. 最常见的Range是用户文本选择范围(user text selection).当用户选择了页面上的 ...
- APP敏捷测试,测试和开发并行!
测试和开发具有同等重要的作用,从一开始,测试和开发就是相向而行的.测试是开发团队的一支独立的.重要的支柱力量. 测试要具备独立性,独立分析业务需求,独立配置测试环境,独立编写测试脚本,独立开发测试工具 ...
- shell获得python的print的值
#!/usr/bin/env python print('aaa') #!/bin/bash var=`python testpython.py` (注意这个引号,是反引号,Tab上面的那个...) ...