应该说在任何网络中,如何使用数据来传递信息,保存和读取信息,并将其变为可以产生价值的东西,而在计算机的世界里面除了0 和 1 ,我们眼中所见的东西在计算机眼里只不过是一堆 0 和 1 数据而已。那么在 iOS 里,又是如何进行数据间的转化的。
初始化 NSData 类型的对象
//定义一个char类型的字符串
const char * string = "Hi there ,this is a C string";
//建立缓冲区,把字符串添加进去
NSData * data = [NSData dataWithBytes:string length:strlen(string)+1];
//获取APP根目录的方法
NSHomeDirectory();
//返回 data 的数据长度
NSLog(@"%ld", reader.length);
//返回data对象的首指针
NSLog(@"%s", reader.bytes);
//获取data格式的数据
NSLog(@"%@", reader.description);
NSString 类型的数据与 NSData 类型之间的转化
NSString * str = @"hello, world!";
NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding]; //NSString转换成NSData类型
NSString * newStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSData 与 UIImage
//例:从本地文件沙盒中取图片并转换为NSData
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];
base 64 编码解码
编码:
NSString * stringExample = [NSString stringWithFormat:@"I Love You"];
NSData * data1 = [stringExample dataUsingEncoding:NSUTF8StringEncoding];
NSString * base64String = [data1 base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn];
解码:
NSData * dataFromString = [[NSData alloc] initWithBase64EncodedString:base64String options:NSDataBase64DecodingIgnoreUnknownCharacters];
文件保存和读取
//定义一个字符串,保存一个路径
NSString * path = @"/tmp/ver.txt";
//把这个保存路径的字符串保存到另一个文件中 encoding是编码
[path writeToFile:@"/tmp/string.txt" atomically:YES encoding:NSASCIIStringEncoding error:nil];
//创建文件管理器
NSFileManager * fm = [NSFileManager defaultManager];
//创建缓冲区,利用NSFileManager对象来获取文件中的内容,也就是这个文件的属性可修改
NSData * fileData = [fm contentsAtPath:@"/tmp/ver.txt"];
//获取上面fileData对象中通过NSFileManager对象获取的文件中的内容,然后再创建一个新的路径,并存储
[fm createFileAtPath:@"/tmp/test4.txt" contents:fileData attributes:nil];
可修改的数据存储器 NSMutableData
创建的方式:
NSString *path = @"/Users/Allen/Desktop/test.dat";
NSString *temp = @"Jarod Yv";
int i = 100;
float f = 98.3333f;
NSMutableData *writer = [[NSMutableData alloc] init];
[writer appendData:[temp dataUsingEncoding:NSUTF8StringEncoding]];
[writer appendBytes:&i length:sizeof(i)];
[writer appendBytes:&f length:sizeof(f)];
[writer writeToFile:path atomically:YES];
读取:
int ii;
float ff;
NSData *reader = [NSData dataWithContentsOfFile:path];
NSString *ttemp = [[NSString alloc] initWithData:[reader subdataWithRange:NSMakeRange(0, [temp length])]encoding:NSUTF8StringEncoding];
[reader getBytes:&ii range:NSMakeRange([temp length], sizeof(ii))];
[reader getBytes:&ff range:NSMakeRange([temp length] + sizeof(ii), sizeof(ff))];