首页 > 代码库 > NSCoding的使用方法---iOS上的归档.

NSCoding的使用方法---iOS上的归档.

在iOS上的归档和在Mac上的归档有些不一样, 在Mac上的归档你可以把文件放在任意的一个文件夹里面, 但是在iOS上, 你所写的文件就只能放在三个文件夹里, 分别是Documents, Library, tmp三个文件, 这里需要注意一下, librarytmp文件会在软件升级, 系统升级或者系统空间不足时会自动清除里面的文件, 只有在Documents文件才可以永久保存, 直到你把软件删除为止.

这里涉及的方法:

NSHomeDirectory:这个方法的意思就是获取软件的主目录.

stringByAooendingPathComponent:这个方法的意思就是在目录后添加一个文件.

下面我们来看看例子:

#import "ViewController.h"#define PZ NSLog(@"----我是一条华丽的分割线----");@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    //获取软件的主目录并且在Documents目录下添加test.txt文件.    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/test.txt"];    //创建文件的路径为path.    [[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil];    NSString *str = @"Hello, world!";    //2.只写的方式打开文件, 并且把文件的写入路径赋给了writeHanle.    NSFileHandle *writeHanle = [NSFileHandle fileHandleForWritingAtPath:path];    //把str里的字符串以UTF8编码存入data, 在这里就完成了归档.    NSData *data =http://www.mamicode.com/ [str dataUsingEncoding:NSUTF8StringEncoding];    //解档: 把归档好的二进制代码以UTF8编码格式转换好赋给了字符串对象str2.    NSString *str2 = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];    NSLog(@"%@", str2);    //打开文件后要记得关闭, 就和内存管理一样.    [writeHandle closeFile];}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end

输出的结果:

2014-10-19 17:31:57.039 FileHandleDemo[12364:672084] Hello, world!

 

NSCoding的使用方法---iOS上的归档.