日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OC-归档和解归档

發布時間:2023/12/9 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OC-归档和解归档 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 //歸檔:將對象數據存儲到文件的過程 NSArchiver 2 //反歸檔:從文件中讀取數據到對象中的過程 3 4 int main(int argc, const char * argv[]) { 5 @autoreleasepool { 6 7 #if 0 8 //使用系統的方法進行歸檔 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_時間類/day21_OC11_歸檔與反歸檔/arch.txt"]; 15 if (flag) { 16 NSLog(@"文件歸檔成功"); 17 }else{ 18 NSLog(@"文件歸檔失敗"); 19 } 20 21 #endif 22 23 #if 0 24 //使用系統進行反歸檔 NSUnarchiver 25 NSDictionary *dict1 = [NSUnarchiver unarchiveObjectWithFile:@"/Users/qianfeng/Desktop/day21-OC11_時間類/day21_OC11_歸檔與反歸檔/arch.txt"]; 26 if (dict1) { 27 NSLog(@"dict = %@",dict1); 28 } 29 #endif 30 31 //#if 0 32 //使用系統的方法進行歸檔 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_歸檔和解歸檔類/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_歸檔和解歸檔類/day21_OC11_歸檔與反歸檔/lpj.plist"]; 52 //NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/qianfeng/Desktop/day21-OC11_時間類/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 這個主要就是返回一個絕對路徑用來存放我們需要儲存的文件。 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 //手動歸檔 - (instancetype)initForWritingWithMutableData:(NSMutableData *)data; 79 80 //創建一個可變的數據對象 81 NSMutableData *mulData = [[NSMutableData alloc] init]; 82 83 84 NSKeyedArchiver *keyArchiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:mulData]; 85 //數組對象 86 NSArray *array = [NSArray arrayWithObjects:@"one",[NSNumber numberWithInteger:1111],[NSDate date],[@"i love ios" dataUsingEncoding:NSUTF8StringEncoding], nil]; 87 //字典對象 88 NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"111",@"one",array,@"array",[NSNumber numberWithInt:1212],@"num",[NSDate date],@"date", nil]; 89 90 //對數組和字典進行編碼 原理:其實是是將數組array和字典dict對象寫入到可變數據對象mulData中。之后在利用muData的writeToFile將二進制數據寫入到文檔中 91 [keyArchiver encodeObject:array forKey:@"array"]; 92 [keyArchiver encodeObject:dict forKey:@"dict"]; 93 94 //編碼結束一定需要調用finishEncoding方法 95 [keyArchiver finishEncoding]; 96 97 //寫入文件 98 BOOL flag = [mulData writeToFile:@"/Users/qianfeng/Desktop/day21-OC11_時間類/day21_OC11_歸檔與反歸檔/initForWritingWithMutableData.txt" atomically:YES]; 99 if (flag) { 100 NSLog(@"歸檔成功"); 101 }else{ 102 NSLog(@"歸檔失敗"); 103 } 104 105 #endif 106 107 #if 0 108 //手動解歸檔 109 //過程 1.首先創建一個NSData對象,并讀取文件的內容 2.通過NSKeyedUnarchiver 的 initForReadingWithData方法從數據對象中解歸檔對象 3.通過關鍵字從解歸檔對象中獲取數組對象和字典對象 110 NSData *data = [NSData dataWithContentsOfFile:@"/Users/qianfeng/Desktop/day21-OC11_時間類/day21_OC11_歸檔與反歸檔/initForWritingWithMutableData.txt"]; 111 NSKeyedUnarchiver *keyUnarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; 112 113 //通過關鍵字 解碼數組 114 NSArray *array = [keyUnarchiver decodeObjectForKey:@"array"]; 115 //通過關鍵字 解碼字典 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 }

歸檔:將程序中的對象寫入到文件的過程

解歸檔:將文件中的數據讀取為程序中的對象的過程

轉載于:https://www.cnblogs.com/BeyondAverage0908/p/4596798.html

總結

以上是生活随笔為你收集整理的OC-归档和解归档的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。