第二十二讲:Objective-C文件操作之归档
一个最简单的例子:创建一个字典,并将该字典写入到文件main.m
//
//main.m
//Archiver
//
//Created by yusian on 14-1-20.
//Copyright (c) 2014年 yusian. All rights reserved.
//
#import <Foundation/Foundation.h>
#define PATH @"/tmp/file.plist"
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSDictionary * dict = [ initWithObjectsAndKeys:@"One", @"1", @"Two", @"2", @"Three", @"3", nil];
;
;
}
return 0;
}
运行结果,在/tmp/目录中生成一个文件“file.plist”:
内容为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>1</key>
<string>One</string>
<key>2</key>
<string>Two</string>
<key>3</key>
<string>Three</string>
</dict>
</plist>
本帖最后由 Sian 于 2014-1-21 21:44 编辑
使用NSData进行文件归档操作,可保存不同类型的数据
1、创建一个String类、Array类、Dictionary类,并初始化赋值,存储到Data中,写入文件;
2、从文件中读取数据;
main.m
//
//main.m
//Archiver
//
//Created by yusian on 14-1-20.
//Copyright (c) 2014年 yusian. All rights reserved.
//
#import <Foundation/Foundation.h>
#define PATH @"/tmp/file.plist"
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSDictionary * dict = [ initWithObjectsAndKeys:@"One", @"1", @"Two", @"2", @"Three", @"3", nil];
NSArray * array = [ initWithObjects:@"One", @"Two", nil];
NSString * str = [ initWithString:@"This is a TestString"];
NSMutableData * data = [ init];
NSKeyedArchiver * archiver = [ initForWritingWithMutableData:data];
;
;
;
;
;
;
;
;
;
}
return 0;
}运行结果即在/tmp生成file.plist文件,该文件用文本编辑器无法直接打开,但可以用xcode读取,如图所示:
Sian 发表于 2014-1-21 21:41
使用NSData进行文件归档操作,可保存不同类型的数据
1、创建一个String类、Array类、Dictionary类,并初始 ...
OK,如果我想从文件中读取数据,如何在程序中实现呢
代码中有用到Archiver进行归档,那么相对应的就有UnArchiver进行解档:
main.m
//
//main.m
//Archiver
//
//Created by yusian on 14-1-20.
//Copyright (c) 2014年 yusian. All rights reserved.
//
#import <Foundation/Foundation.h>
#define PATH @"/tmp/file.plist"
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSData * data = [ initWithContentsOfFile:PATH];
NSKeyedUnarchiver * archiver = [ initForReadingWithData:data];
NSString * str = ;
NSArray * array = ;
NSDictionary * dict = ;
NSLog(@"%@",str);
NSLog(@"%@",array);
NSLog(@"%@",dict);
;
;
}
return 0;
}
输出结果:
2014-01-21 22:01:13.374 Archiver This is a TestString
2014-01-21 22:01:13.377 Archiver (
One,
Two
)
2014-01-21 22:01:13.379 Archiver {
1 = One;
2 = Two;
3 = Three;
}
Program ended with exit code: 0
页:
[1]