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];
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];