iOS开发学习专题-基础知识(四) NSNumber容器 NSData数据 NSData转换的详细使用方式
来源:互联网 发布:网络自学英语 编辑:程序博客网 时间:2024/05/17 14:28
本文主要讲解的是 NSNumber容器NSData数据NSData转和NSString、UIImage、NSdictionary等转换的详细使用方式
文章是博主原创,转载请标明出处http://blog.csdn.net/werctzzz/article/details/72188609
NSNumber是一个子类,NSValue为它提供了一个值作为任何C标量(数字)类型。它定义了一组方法特别用于设置和访问值作为符号或无符号char,short int,int,long int,long long int,float,或double或作为BOOL。
#pragma mark NSNumber详细使用 // 1.基本数据类型封装为对象 初始化 NSNumber *n1 = [NSNumber numberWithInt:12]; int a = 10; float f1 = 3.23f; double d1 = 2.34; NSNumber * n2 = [NSNumber numberWithInt:a]; NSNumber * n3 = [NSNumber numberWithFloat:f1]; NSNumber * n4 = [NSNumber numberWithDouble:d1]; // 2.通过数组实现简单的计算 NSMutableArray *array = [[NSMutableArray alloc]init]; [array addObject:n1]; [array addObject:n2]; [array addObject:n3]; [array addObject:n4]; // ⭐️知识点:@(变量名)把括号内容转换为NSNumber对象 [array addObject:@18]; NSNumber * n5 = array[0]; int a1 = [n5 intValue]; //获取对象的整形值 NSNumber * n6 = array[2]; float f2 = [n6 floatValue]; // 计算 int a2 = [array[0] intValue]+[array[2] floatValue]; int a3 = a1 + f2; NSLog(@"%d%d%d",a1,a2,a3); // 数组、字典中只能存放OC对象, 不能存放int、float、double等基本数据类 // 如果要把int、float、double放进数组或字典中, 需要把他们用NSNumber包装成对象 // 3.判断两个NSNumber是否相等 BOOL ret = [n1 isEqualToNumber:n3]; //这种比较也是可以跨不同对象的,比如:比较intNumber和floatNumber // 4.比较两个整型的NSNumber的大小 if ([n1 compare:n2] == NSOrderedAscending) { NSLog(@"<");//小于 }else if([n1 compare:n2] == NSOrderedSame){ NSLog(@"=");//等于 }else if([n1 compare:n2] == NSOrderedDescending){ NSLog(@">");//大于 }在开发中,我们需要把一些信息(图片,文字,视频等等)写入到文件、存储或是发送到网络服务器的时候,需要把这些数据转换变成把各种数据转换成二进制。
NSData能帮我们完成这个任务
#pragma mark NSData详细使用 // 1.初始化data对象 NSData * data = [[NSData alloc]init]; // 我们可以查看NSData的创建方法,由下可知,我们的data可以通过很多类型来初始化,当然我们也可以把data用在别的类型初始化上 // + dataWithBytes:length: // + dataWithContentsOfFile: // + dataWithContentsOfMappedFile: // + dataWithContentsOfURL: // + dataWithData: // 2.NSData的常用转换 // 2.1 NSString NSString * aStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSString * bStr = @"1234abcd"; NSData * data1 = [bStr dataUsingEncoding: NSUTF8StringEncoding]; // 2.2 UIImage // 从本地文件沙盒中取图片并转换为NSData NSString * bundlePath = [[NSBundle mainBundle] bundlePath]; NSString * name = [NSString stringWithFormat:@"test.png"]; NSString * imgPath = [bundlePath stringByAppendingPathComponent:name]; NSData *imageData = [NSData dataWithContentsOfFile:imgPath]; // NSData 转换成 UIImage 类型 UIImage *aImage = [UIImage imageWithData: imageData]; // UIImage 转换成 NSData 类型 NSData * imgData = UIImagePNGRepresentation(aImage); // 3.NSData 归档解档 数组、字典的转换 NSDictionary * dataDic = [NSDictionary dictionaryWithObjectsAndKeys: @"v1",@"k1", @"v2",@"k2", @"v3",@"k3", @"v4",@"k4",nil]; // 转成NSData NSData * filedata = [NSKeyedArchiver archivedDataWithRootObject:dataDic]; // 归档 NSString * filepath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"file.list"]; // 存到名为@"file.list"的文件里面 NSFileManager * manager = [NSFileManager defaultManager]; [manager createFileAtPath:filepath contents:filedata attributes:nil]; // 解档 // 直接从文件还原 NSDictionary * undataDic1 = [NSKeyedUnarchiver unarchiveObjectWithFile:filepath]; // 通过NSData还原 NSData * unfiledata = [manager contentsAtPath:filepath]; NSDictionary * undataDic2 = [NSKeyedUnarchiver unarchiveObjectWithData:unfiledata]; // ⭐️其实无论是数组,还是字典,归档,解档都是一样可以
阅读全文
0 0
- iOS开发学习专题-基础知识(四) NSNumber容器 NSData数据 NSData转换的详细使用方式
- IOS开发-NSNumber、NSValue、NSData的区别
- NSNumber、NSData、NSValue的使用场景
- iOS开发学习专题-基础知识(三)NSDictionary字典NSMutableDictionary可变字典NSDictionary字典和json转换详细使用方式
- NSString->NSData->NSDictionary和NSNumber->NSString的转换
- iOS中NSdata的使用
- iOS之NSData的使用
- iOS开发中NSData与Byte的转换
- iOS开发---UIImage和NSData的相互转换
- iOS开发学习专题-基础知识(五) NSDate时间 NSUserDefaults本地存储 NSNotification系统通知的详细使用方式
- iOS开发学习专题-基础知识(一)NSString NSMutableString NSRange NSNotFound详细使用方式
- IOS 开发学习25 NSData 的一些基本操作
- iOS NSData与NSArray之间的转换
- iOS NSString 和 NSData 的相互转换
- iOS开发-NSData
- ios开发之NSData
- NSNumber,NSValue和NSData
- NSNumber, NSValue, NSData
- Lintcode51 Previous Permutation solution 题解
- LeetCode | Evaluate Reverse Polish Notation
- 4-12 判断奇偶性 (10分)
- caffe 追加新层new layer添加.cu文件问题--无法解析的外部符号
- FreeMarker
- iOS开发学习专题-基础知识(四) NSNumber容器 NSData数据 NSData转换的详细使用方式
- 通过WifiManager可以实现对wifi进行操作,实现wifi自动连接等一些功能
- window命令行直接打开手机的APP应用
- 如何使用命令行在github搭建项目?
- 基于Unity3D(UGUI)的背包系统<二>
- Linux下安装Python-3.5.0
- Sublime Text3 总结笔记
- ISP图像处理概况
- 将一个字串中含有全角的数字字符、字母、空格或'%+-()'字符转换为相应半角字符