NSData和NSMutableData存储的是二进制数据,在文件操作,网络,以及核心图形图像中使用较广泛。NSData创建后不可以再修改,NSMutableData可以再次修改。
1、NSString和NSData之间的转换
NSString *string = @“哎我去上市了! " ;
//1 、字符串转换成 NSData
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
//2 、 NSData 转换成字符串
NSString * inString = [[NSString alloc]initWithData: data encoding:NSUTF8StringEncoding];
2、UIImage和NSData之间的转换
// 获取图片路径
NSString *imgPath = [[NSBundle mainBundle] pathForResource:@"01loading.png" ofType:nil];
NSData *imgData = [ NSData dataWithContentsOfFile :imgPath];
//直接使用,也可写入文件
self.imageView.image = [UIImage imageWithData:imgData];
1>.数据库里存储图片 存储图片路径 /images/car@2x.png;
2>.如果图片是较小的 可以将UIImage转换成NSData存数据库。
3、NSNumber、NSArray、NSDictionary和NSData之间的转换
数组转NSData是建立在归档的基础上,归档也称为序列化,OC中NSString 对象、NSNumber对象、NSArray对象
NSDictionary字典对象、NSData 数据对象、这些类要进行数据保存时可以通过NSKeyedArchive 类来实现。
Foundtaion框架<Foundation/NSKeyedArchiver.h>提供归档和解归档的方式,也叫做序列化和反序列化的过程。
1>.把字典或数组用归档形式直接保存到某一个文件中
// 初始化一个字典
NSDictionary *dict = @{
@"key1" : @"hahahah1" ,
@"key2" : @"hahahah2" ,
@"key3" : @"hahahah3" ,
@"key4" : @"hahahah4" ,
@"key5" : @"hahahah5" ,
@"key6" : @"hahahah6" ,
@"key7":@"hahahah7"};
// 归档路径
NSString *docPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"dict.plist"];
// 归档后直接保存到文件中
[NSKeyedArchiver archiveRootObject:dict toFile:docPath];
2>.把字典或数组先转换成NSData,再保存到某一个文件中
// 初始化一个字典
NSDictionary *dict = @{
@"key1" : @"hahahah1" ,
@"key2" : @"hahahah2" ,
@"key3" : @"hahahah3" ,
@"key4" : @"hahahah4" ,
@"key5" : @"hahahah5" ,
@"key6" : @"hahahah6" ,
@"key7":@"hahahah7"};
// 归档路径
NSString *docPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"dict.plist"];
//转换成NSData
NSData *dictData = [ NSKeyedArchiver archivedDataWithRootObject :dict];
//保存到文件中
NSFileManager *fm = [ NSFileManager defaultManager ];
[fm createFileAtPath:docPath contents:dictData attributes:nil];
3>.解归档
直接从文件解归档
NSDictionary *Undict = [ NSKeyedUnarchiver unarchiveObjectWithFile :docPath];
将文件转换成NSData,在从NSData解归档
NSData *UndictData = [fm contentsAtPath :docPath];
NSDictionary *Undict = [NSKeyedUnarchiver unarchiveObjectWithData:UndictData];
————————————————
版权声明:本文为CSDN博主「BobooO」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/debolee/article/details/44196469