OC-归档和解归档
1 //歸檔:將對(duì)象數(shù)據(jù)存儲(chǔ)到文件的過(guò)程 NSArchiver
2 //反歸檔:從文件中讀取數(shù)據(jù)到對(duì)象中的過(guò)程
3
4 int main(int argc, const char * argv[]) {
5 @autoreleasepool {
6
7 #if 0
8 //使用系統(tǒng)的方法進(jìn)行歸檔 NSArchiver
9 NSDictionary *mutDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"111",@"one",@"222",@"two", nil];
10 [mutDic setValue:[NSDate date] forKey:@"date"];
11 [mutDic setValue:[NSNumber numberWithInteger:8889] forKey:@"num"];
12 [mutDic setValue:[@"ios" dataUsingEncoding:NSUTF8StringEncoding] forKey:@"data"];
13
14 BOOL flag = [NSArchiver archiveRootObject:mutDic toFile:@"/Users/qianfeng/Desktop/day21-OC11_時(shí)間類(lèi)/day21_OC11_歸檔與反歸檔/arch.txt"];
15 if (flag) {
16 NSLog(@"文件歸檔成功");
17 }else{
18 NSLog(@"文件歸檔失敗");
19 }
20
21 #endif
22
23 #if 0
24 //使用系統(tǒng)進(jìn)行反歸檔 NSUnarchiver
25 NSDictionary *dict1 = [NSUnarchiver unarchiveObjectWithFile:@"/Users/qianfeng/Desktop/day21-OC11_時(shí)間類(lèi)/day21_OC11_歸檔與反歸檔/arch.txt"];
26 if (dict1) {
27 NSLog(@"dict = %@",dict1);
28 }
29 #endif
30
31 //#if 0
32 //使用系統(tǒng)的方法進(jìn)行歸檔 NSKeyedArchiver
33 NSDictionary *mutDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"111",@"one",@"222",@"two", nil];
34 [mutDic setValue:[NSDate date] forKey:@"date"];
35 [mutDic setValue:[NSNumber numberWithInteger:8889] forKey:@"num"];
36 [mutDic setValue:[@"ios" dataUsingEncoding:NSUTF8StringEncoding] forKey:@"data"];
37
38 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:mutDic];
39 BOOL ret = [data writeToFile:@"/Users/qianfeng/Desktop/day21-OC11_json_歸檔和解歸檔類(lèi)/day21_OC11_歸檔與反歸檔/lpj.plist" atomically:YES];
40 if (ret) {
41 NSLog(@"歸檔成功");
42 }
43 else{
44 NSLog(@"歸檔失敗");
45 }
46
47 //#endif
48
49 #if 0
50 //解歸檔
51 NSData *data = [NSData dataWithContentsOfFile:@"/Users/qianfeng/Desktop/day21-OC11_json_歸檔和解歸檔類(lèi)/day21_OC11_歸檔與反歸檔/lpj.plist"];
52 //NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/qianfeng/Desktop/day21-OC11_時(shí)間類(lèi)/day21_OC11_歸檔與反歸檔/data.txt"];
53 NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithData:data];
54 if (dict) {
55 NSLog(@"解歸檔成功");
56 NSLog(@"%@",dict);
57 }else{
58 NSLog(@"解歸檔失敗");
59
60 }
61 #endif
62
63 #if 0
64 // NSSearchPathForDirectoriesInDomains 這個(gè)主要就是返回一個(gè)絕對(duì)路徑用來(lái)存放我們需要儲(chǔ)存的文件。
65 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
66 NSString *documentsDirectory = [paths objectAtIndex:0];
67 NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:@"shoppingCar.plist"];
68 #endif
69
70
71 }
72
73
74 @autoreleasepool {
75
76 #if 0
77
78 //手動(dòng)歸檔 - (instancetype)initForWritingWithMutableData:(NSMutableData *)data;
79
80 //創(chuàng)建一個(gè)可變的數(shù)據(jù)對(duì)象
81 NSMutableData *mulData = [[NSMutableData alloc] init];
82
83
84 NSKeyedArchiver *keyArchiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:mulData];
85 //數(shù)組對(duì)象
86 NSArray *array = [NSArray arrayWithObjects:@"one",[NSNumber numberWithInteger:1111],[NSDate date],[@"i love ios" dataUsingEncoding:NSUTF8StringEncoding], nil];
87 //字典對(duì)象
88 NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"111",@"one",array,@"array",[NSNumber numberWithInt:1212],@"num",[NSDate date],@"date", nil];
89
90 //對(duì)數(shù)組和字典進(jìn)行編碼 原理:其實(shí)是是將數(shù)組array和字典dict對(duì)象寫(xiě)入到可變數(shù)據(jù)對(duì)象mulData中。之后在利用muData的writeToFile將二進(jìn)制數(shù)據(jù)寫(xiě)入到文檔中
91 [keyArchiver encodeObject:array forKey:@"array"];
92 [keyArchiver encodeObject:dict forKey:@"dict"];
93
94 //編碼結(jié)束一定需要調(diào)用finishEncoding方法
95 [keyArchiver finishEncoding];
96
97 //寫(xiě)入文件
98 BOOL flag = [mulData writeToFile:@"/Users/qianfeng/Desktop/day21-OC11_時(shí)間類(lèi)/day21_OC11_歸檔與反歸檔/initForWritingWithMutableData.txt" atomically:YES];
99 if (flag) {
100 NSLog(@"歸檔成功");
101 }else{
102 NSLog(@"歸檔失敗");
103 }
104
105 #endif
106
107 #if 0
108 //手動(dòng)解歸檔
109 //過(guò)程 1.首先創(chuàng)建一個(gè)NSData對(duì)象,并讀取文件的內(nèi)容 2.通過(guò)NSKeyedUnarchiver 的 initForReadingWithData方法從數(shù)據(jù)對(duì)象中解歸檔對(duì)象 3.通過(guò)關(guān)鍵字從解歸檔對(duì)象中獲取數(shù)組對(duì)象和字典對(duì)象
110 NSData *data = [NSData dataWithContentsOfFile:@"/Users/qianfeng/Desktop/day21-OC11_時(shí)間類(lèi)/day21_OC11_歸檔與反歸檔/initForWritingWithMutableData.txt"];
111 NSKeyedUnarchiver *keyUnarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
112
113 //通過(guò)關(guān)鍵字 解碼數(shù)組
114 NSArray *array = [keyUnarchiver decodeObjectForKey:@"array"];
115 //通過(guò)關(guān)鍵字 解碼字典
116 NSDictionary *dict = [keyUnarchiver decodeObjectForKey:@"dict"];
117
118 [keyUnarchiver finishDecoding];
119
120 NSLog(@"array = %@",array);
121 NSLog(@"dict = %@",dict);
122
123 #endif
124 }
125 return 0;
126 }
歸檔:將程序中的對(duì)象寫(xiě)入到文件的過(guò)程
解歸檔:將文件中的數(shù)據(jù)讀取為程序中的對(duì)象的過(guò)程
轉(zhuǎn)載于:https://www.cnblogs.com/BeyondAverage0908/p/4596798.html
總結(jié)
- 上一篇: 【BZOJ】【4145】【AMPPZ20
- 下一篇: TextView 多文字字体颜色及多事件