亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

iOS階段學習第18天筆記(Plist-Archiver-歸檔與解歸檔操作)

2019-11-14 18:43:05
字體:
來源:轉載
供稿:網友

iOS學習(OC語言)知識點整理

一、歸檔與解歸檔的操作

 

1)歸檔是一個過程,將一個或多個對象存儲起來,以便以后可以還原,包括將對象存入文件,以后再讀取

     將數據對象歸檔成plist文件

 

2)plist文件中只能存放:NSString、NSDate、NSNumber、Bool、NSData、NSArray、NSDictionary

     并且NSArray和NSDictionary中只能是以上的類型

 

3)歸檔存放時數據是什么類型,讀取數據時就用什么類型的數據接收。

 

4)歸檔不能直接操作自定義對象類型的數據。

 

5)歸檔與解歸檔操作實例代碼 :     

 1 //創建一個二維數組(數組中每個元素又是一個數組對象) 2 NSMutableArray *array1=[[NSMutableArray alloc]init]; 3 for(int i=0;i<4;i++){ 4   [array1 addObject:[NSString stringWithFormat:@"str%d",i+1]]; 5 } 6   7 NSMutableArray *array2=[[NSMutableArray alloc]init]; 8  for(int i=0;i<5;i++){ 9    [array2 addObject:[NSNumber numberWithInt:arc4random()%100]];10 }11 12 NSArray *bigArray=@[array1,array2];13 //將數組對象寫入文件,(先寫入內存中,如果寫入成功,馬上存入文件)14 [bigArray writeToFile:@"/Users/kingkong/Desktop/day08/array.plist" atomically:YES];15 16 //將plist文件的內容直接讀取出存入數組17 NSArray *newArray=[[NSArray alloc]initWithContentsOfFile:@"/Users/kingkong/Desktop/day08/array.plist"];18 NSLog(@"%@",newArray);19 20 NSArray *emails=@[@"zhangsan@163.com",@"zhangsan@QQ.com"];21 //創建一個字典對象22 NSDictionary *dict=[NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"name",@"123456",@"passWord",emails,@"email", nil];23 //將字典對象寫入文件24 [dict writeToFile:@"/Users/kingkong/Desktop/day08/dict.plist" atomically:YES];25 26  //將plist文件的內如讀取出來存入字典27 NSDictionary *newDict=[NSDictionary dictionaryWithContentsOfFile:@"/Users/kingkong/Desktop/day08/dict.plist"];28 NSLog(@"%@",newDict);

6)歸檔與解歸檔自定義類數據 實例代碼:

    1、定義一個Birthday類,在.h文件中遵守NSCoding 協議 例如: 

1 @interface Birthday : NSObject<NSCoding>2 //出生日期類,年、月、日3 @PRoperty(nonatomic,assign)int year;4 @property(nonatomic,assign)int month;5 @property(nonatomic,assign)int day;6 @end

 
   2、在.m文件中實現NSCoding協議方法 例如: 

 1 #import "Birthday.h" 2 @implementation Birthday 3 //在歸檔時自動調用這個方法,將所有的成員變量編碼(給成員變量設置相應的鍵) -(void)encodeWithCoder:(NSCoder *)aCoder 4   { 5      [aCoder encodeInt:_year forKey:@"year"]; 6      [aCoder encodeInt:_month forKey:@"month"]; 7      [aCoder encodeInt:_day forKey:@"day"]; 8     } 9 10 -(id)initWithCoder:(NSCoder *)aDecoder11     {12     if(self=[super init]){13         _year=[aDecoder decodeIntForKey:@"year"];14         _month=[aDecoder decodeIntForKey:@"month"];15         _day=[aDecoder decodeIntForKey:@"day"];16     }17       return self;18    }19 @end

  

  3、在 main 文件中執行歸檔與解歸檔方法 例如: 

 1 Birthday *b=[[Birthday alloc]init]; 2 b.year=2015; 3 b.month=10; 4 b.day=25; 5  6 //b必須遵守歸檔協議 7 NSString *path=@"/Users/kingkong/Desktop/day09/Birthday.data"; 8 //執行歸檔操作 9 BOOL ret=[NSKeyedArchiver archiveRootObject:b toFile:path];10 if(ret){11 //執行解歸檔操作12 Birthday *b2=[NSKeyedUnarchiver unarchiveObjectWithFile:path];13 NSLog(@"year:%i",b2.year);14 }

 
7)將多個對象歸檔到一個文件中 實例代碼
   
 1、定義一個Person類 在.h文件中遵守NSCoding協議 例如: 

1  #import <Foundation/Foundation.h>2   //如果要對對象進行歸檔,必須遵守歸檔協議,實現協議中規范的方法3   @interface Person : NSObject<NSCoding>4   @property(nonatomic,copy)NSString *name;5   @property(nonatomic,assign)int age;6   -(void)print;7   @end

  
 2、在.m中實現協議方法 例如: 

 1   #import "Person.h" 2    @implementation Person 3   //在歸檔時自動調用這個方法,將所有的成員變量編碼(給成員變量設置相應的鍵) 4   - (void)encodeWithCoder:(NSCoder *)aCoder 5   { 6     NSLog(@"%@",NSStringFromSelector(_cmd));
//encodeInt 用于整型數據 encodeObject 用于字符串或對象
7 [aCoder encodeObject:_name forKey:@"name"]; 8 [aCoder encodeInt:_age forKey:@"age"]; 9 }10 //解歸檔時自動調用此方法11 - (id)initWithCoder:(NSCoder *)aDecoder12 {13 //如果父類也遵守了歸檔協議,self=[super initWithCode:aDecode]14 if(self=[super init]){15 //根據編碼時的鍵取值decodeIntForKey 用于整型數據 decodeObjectForKey 用于字符串或對象16 _name=[aDecoder decodeObjectForKey:@"name"];17 _age=[aDecoder decodeIntForKey:@"age"];18 }19 return self;20 }21 -(void)print22 {23 NSLog(@"name:%@,age:%d",_name,_age);24 }25 @end

 

 3、在main文件中執行方法 例如:

 1 Person *p1=[[Person alloc]init]; 2 p1.name=@"kingkong"; 3 p1.age=20; 4          5 NSArray *array1=@[@"red",@"blue",@"yellow"]; 6          7 //創建一個對象的緩沖區空間 8 NSMutableData *mutableData=[[NSMutableData alloc]init]; 9 //創建一個歸檔器,關聯一個對象的緩沖區10 NSKeyedArchiver *archiver=[[NSKeyedArchiver alloc]initForWritingWithMutableData:mutableData];11 //將對象編碼后存入緩沖區12 [archiver encodeObject:p1 forKey:@"person"];13 [archiver encodeObject:array1 forKey:@"array"];14 //編碼結束15 [archiver finishEncoding];//16 //將緩沖區中的數據寫入到文件中17 NSString *path=@"/Users/kingkong/Desktop/day09/doc.data";18 BOOL ret=[mutableData writeToFile: path atomically:YES];19 NSLog(@"ret=%d",ret);20         21 //解歸檔操作22 NSData *data=[NSData dataWithContentsOfFile: path];23 //創建一個解歸檔器對象指定數據所在的緩沖區24 NSKeyedUnarchiver *unarchiver=[[NSKeyedUnarchiver alloc]initForReadingWithData:data];25 //使用解歸檔器提取數據26 Person *p2=[unarchiver decodeObjectForKey:@"person"];27 NSArray *array2=[unarchiver decodeObjectForKey:@"array"];28 //解歸檔結束29 [unarchiver finishDecoding];30 //NSLog(@"%@,%d",p2.name,p2.age);
31 [p2 print];
32 NSLog(@"%@",array2);

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性色19p| 欧美亚洲免费电影| 久久精品国产清自在天天线| 欧美午夜丰满在线18影院| 亚洲成人激情在线| 97精品久久久| 欧美电影免费观看网站| 国产亚洲精品成人av久久ww| 日韩亚洲欧美中文在线| 91黄色8090| 亚洲无亚洲人成网站77777| 欧美激情亚洲激情| 毛片精品免费在线观看| 日韩一区二区福利| 亚洲欧美激情精品一区二区| 午夜精品久久久久久久久久久久| 亚洲欧洲午夜一线一品| 国产精品九九久久久久久久| 国产成人精品免高潮在线观看| 富二代精品短视频| 国产高清在线不卡| 成人黄色免费看| 日韩视频免费在线观看| 超碰97人人做人人爱少妇| 亚洲精品免费在线视频| 中日韩美女免费视频网站在线观看| 欧美日本精品在线| 清纯唯美亚洲激情| 国产成人高清激情视频在线观看| 亚洲视频一区二区三区| 国产精品嫩草影院一区二区| 激情懂色av一区av二区av| 日日噜噜噜夜夜爽亚洲精品| 欧美极品少妇xxxxx| 欧美一级大片在线免费观看| 中文字幕九色91在线| 久久久极品av| 成人激情av在线| 久久人人爽亚洲精品天堂| 欧美日韩综合视频网址| 欧美日本中文字幕| 色噜噜狠狠狠综合曰曰曰88av| 国产亚洲在线播放| 欧美激情亚洲精品| 日本不卡视频在线播放| 色琪琪综合男人的天堂aⅴ视频| 国产精品91久久久久久| 欧美日韩午夜视频在线观看| 国产脚交av在线一区二区| 国产在线视频一区| 日韩一区二区三区xxxx| 国产精品永久免费在线| 国产一区二区三区在线免费观看| 26uuu另类亚洲欧美日本一| 欧美中文字幕在线观看| 日韩成人中文字幕| 欧美精品久久久久久久久| 亚洲精品久久久一区二区三区| 中文字幕欧美日韩| 亚洲美女av电影| 成人久久一区二区三区| 亚洲最新av在线| 久久手机免费视频| 欧美极品美女视频网站在线观看免费| 91精品91久久久久久| 欧美一级视频一区二区| 欧美一区二区三区免费视| 日本久久久久久| 欧美日韩一区二区在线| 亚洲精品白浆高清久久久久久| 日韩激情在线视频| 国产精品高清免费在线观看| 国产成人精品免费久久久久| 亚洲一区av在线播放| 亚洲视频在线观看免费| 亚洲一区二区三区视频| 亚洲一品av免费观看| 精品magnet| 亚洲国产成人一区| 最近免费中文字幕视频2019| 在线视频亚洲欧美| 久久精品国产久精国产一老狼| 欧美在线视频免费观看| 欧美成人精品xxx| 91久久久久久久久久| 国内精品在线一区| 91手机视频在线观看| 欧美激情视频给我| 91精品久久久久久久久久久| 国产97人人超碰caoprom| www国产91| 日韩欧美亚洲国产一区| 日本乱人伦a精品| 亚洲欧洲免费视频| 欧洲美女免费图片一区| 成人a在线视频| 国产精品伦子伦免费视频| 日韩亚洲综合在线| 91免费综合在线| 亚洲欧美成人一区二区在线电影| 永久免费精品影视网站| 久久国产精品视频| 456国产精品| 欧美午夜精品久久久久久浪潮| 欧美激情手机在线视频| 欧美精品国产精品日韩精品| 中文字幕亚洲无线码在线一区| 亚洲性视频网站| 一个人看的www久久| 91超碰caoporn97人人| 91爱视频在线| 欧美日韩国产专区| 色视频www在线播放国产成人| 98精品国产高清在线xxxx天堂| 欧美理论电影在线观看| 亚洲人成网站色ww在线| 国产精品久久久久久久app| 日韩欧美在线第一页| 欧美黄色三级网站| 一区二区中文字幕| 日韩精品免费看| 中文综合在线观看| 亚洲在线免费观看| 茄子视频成人在线| 国产精品观看在线亚洲人成网| 日韩中文第一页| 欧美福利视频在线| 午夜精品久久久久久久久久久久| 日韩av影片在线观看| 国产精品久久国产精品99gif| 国产91精品网站| 亚洲国内精品在线| 91亚洲精华国产精华| 久久久国产视频| 日韩一区二区在线视频| 97成人精品视频在线观看| 国产精品久久久久久久久久久新郎| 国产91免费观看| xvideos亚洲人网站| 精品香蕉一区二区三区| 亚洲一区二区三区sesese| 日韩久久精品成人| 亚洲乱码一区av黑人高潮| 国产自产女人91一区在线观看| 91香蕉电影院| 国产成人精品一区二区三区| 精品久久国产精品| 国产成人福利夜色影视| 久久久噜噜噜久久久| 性金发美女69hd大尺寸| 日韩视频在线免费| 国产有码在线一区二区视频| 亚洲欧美国产精品久久久久久久| 国产欧美精品日韩| 在线观看中文字幕亚洲| 亚洲国模精品一区| 欧美电影在线观看完整版| 欧美精品在线免费| 久久频这里精品99香蕉| 国产情人节一区| 国产精品一区二区电影| 欧美极度另类性三渗透| 国内精品久久久久| 国产成人精品亚洲精品|