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 = [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!

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。