iOS开发 oc中重要知识点

NSData

2016-06-08  本文已影响288人  coder_hong

简介

字符串与NSData
 NSString *aString = @"http://www.baidu.com";
 NSData *aData = [aString dataUsingEncoding: NSUTF8StringEncoding];
  NSString *aString = [[NSString alloc] initWithData:adata encoding:NSUTF8StringEncoding];
Byte与NSData
 NSString *testString = @"1234567890";
 NSData *testData = [testString dataUsingEncoding: NSUTF8StringEncoding];  
 Byte *testByte = (Byte *)[testData bytes];
Byte byte[] = {0,1,2,3,4,5,6,7};
NSData *adata = [[NSData alloc] initWithBytes:byte length:8];
NSData -->UIImage
 UIImage *aImage = [UIImage imageWithData: imageData];
 NSString *path = [[NSBundle mainBundle] bundlePath];
 NSString *name = [NSString stringWithFormat:@"ceshi.png"];
 NSString *finalPath = [path stringByAppendingPathComponent:name];
 NSData *imageData = [NSData dataWithContentsOfFile: finalPath];
 UIImage *aimage = [UIImage imageWithData: imageData];
// 
NSData *imageData = UIImageJPEGRepresentation(image, compressionQuality);

NSData *imageData = UIImagePNGRepresentation(aimae);
NSData *data=[[NSData alloc]init];
NSMutableData *mData=[[NSMutableData alloc]init]; 
mData=[NSData dataWithData:data];

通过NSData 和 NSKeyedArchive 实现一个文件归档多个对象

实现原理

屏幕快照 2016-06-08 下午3.42.15.png

实例操作

归档(编码)

// 新建一块可变数据区
NSMutableData *data = [NSMutableData data];

// 将数据区连接到一个NSKeyedArchiver对象
NSKeyedArchiver *archiver = [[[NSKeyedArchiver alloc] initForWritingWithMutableData:data] autorelease];

// 开始存档对象,存档的数据都会存储到NSMutableData中
[archiver encodeObject:person1 forKey:@"person1"];
[archiver encodeObject:person2 forKey:@"person2"];

// 存档完毕(一定要调用这个方法)
[archiver finishEncoding];

// 将存档的数据写入文件
[data writeToFile:path atomically:YES];

NSData-从同一文件中恢复2个Person对象
恢复(解码)

// 从文件中读取数据
NSData *data = [NSData dataWithContentsOfFile:path];

// 根据数据,解析成一个NSKeyedUnarchiver对象
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];

Person *person1 = [unarchiver decodeObjectForKey:@"person1"];
Person *person2 = [unarchiver decodeObjectForKey:@"person2"];

// 恢复完毕
[unarchiver finishDecoding];
上一篇 下一篇

猜你喜欢

热点阅读