精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

剖析Objective-C持久化教程

移動開發 iOS
本文介紹的是剖析Objective-C持久化教程,主要談論Objective-C持久化的問題,我們來看內容。

剖析Objective-C持久化教程是本文要介紹的內容,很詳細的講解了Objective-C持久化的問題,不多說,我們來看內容。

當前需求

在做登錄模塊時,需要做登錄的歷史記錄,存儲本機所有登錄的用戶的用戶名密碼,以及登錄策略如是否記住密碼,是否自動登錄等。具體實現之前,我認為這個需求看樣子并不需要SQLite,因為登錄用戶不可能太多,而且存儲的字段也就四個而已,估計用NSUserDefaults存一下數組就結了。

初遇困難

令我沮喪的是,這么一個明確的需求竟然一時半會都沒有完成,用戶登陸信息明明很簡單的

Objective-c代碼 

  1. @interface LoginUserInfo : NSObject     
  2. {     
  3.     NSString *username_;     
  4.     NSString *password_;     
  5.     BOOL     remember_;     
  6.     BOOL     autoLogin_;     
  7. }     
  8.     
  9. @property (nonatomic, copy) NSString *username;     
  10. @property (nonatomic, copy) NSString *password;     
  11. @property (nonatomic, assign) BOOL remember;     
  12. @property (nonatomic, assign) BOOL autoLogin;     
  13. @end     
  14.       
  15. @protocol LoginHistoryDelegate;    
  16.  
  17. @interface LoginUserInfo : NSObject  
  18. {  
  19.     NSString *username_;  
  20.     NSString *password_;  
  21.     BOOL     remember_;  
  22.     BOOL     autoLogin_;  
  23. }  
  24.  
  25. @property (nonatomic, copy) NSString *username;  
  26. @property (nonatomic, copy) NSString *password;  
  27. @property (nonatomic, assign) BOOL remember;  
  28. @property (nonatomic, assign) BOOL autoLogin;  
  29. @end  
  30.    
  31. @protocol LoginHistoryDelegate;   

存取的時候也很簡單

Objective-c代碼  

  1. // 增加一個用戶要看是否是新用戶,如果是新的就增加,否則要修改     
  2. - (void)addUser:(LoginUserInfo *)info     
  3. {     
  4.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];     
  5.     NSArray *list = [self getUserList];     
  6.     NSArray *newList = nil;     
  7.     if (list == nil)     
  8.     {     
  9.         newList = [NSArray arrayWithObject:info];     
  10.     }     
  11.     else     
  12.     {     
  13.         NSMutableArray *mutList = [[NSMutableArray alloc] initWithCapacity:[list count]+1];     
  14.         [mutList addObject:info];     
  15.         for (LoginUserInfo *user in list)     
  16.         {     
  17.             if (![[info username] isEqualToString:[user username]])     
  18.             {     
  19.                 [mutList addObject:user];     
  20.             }     
  21.         }     
  22.         newList = [mutList mutableCopy];     
  23.     }     
  24.     [defaults setObject:newList forKey:kUserHistoryKey];     
  25.     [defaults synchronize];     
  26.     [newList release];     
  27. }     
  28.     
  29. - (NSArray *)getUserList     
  30. {     
  31.     NSArray *objectArray = [[NSUserDefaults standardUserDefaults]  objectForKey:kUserHistoryKey];     
  32.     return objectArray;     
  33. }    
  34.  
  35. // 增加一個用戶要看是否是新用戶,如果是新的就增加,否則要修改  
  36. - (void)addUser:(LoginUserInfo *)info  
  37. {  
  38.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];  
  39.     NSArray *list = [self getUserList];  
  40.     NSArray *newList = nil;  
  41.     if (list == nil)  
  42.     {  
  43.         newList = [NSArray arrayWithObject:info];  
  44.     }  
  45.     else  
  46.     {  
  47.         NSMutableArray *mutList = [[NSMutableArray alloc] initWithCapacity:[list count]+1];  
  48.         [mutList addObject:info];  
  49.         for (LoginUserInfo *user in list)  
  50.         {  
  51.             if (![[info username] isEqualToString:[user username]])  
  52.             {  
  53.                 [mutList addObject:user];  
  54.             }  
  55.         }  
  56.         newList = [mutList mutableCopy];  
  57.     }  
  58.     [defaults setObject:newList forKey:kUserHistoryKey];  
  59.     [defaults synchronize];  
  60.     [newList release];  
  61. }  
  62.  
  63. - (NSArray *)getUserList  
  64. {  
  65.     NSArray *objectArray = [[NSUserDefaults standardUserDefaults]  objectForKey:kUserHistoryKey];  
  66.     return objectArray;  

但這樣無論我怎么存儲用戶列表,在getUserList的時候獲得的始終是nil。

各種嘗試

難道是NSUserdefaults有問題么?我試了試在同個方法里改為存儲普通的int,bool,甚至NSString都沒問題,難道是因為沒有存儲數組么

Objective-c代碼 

  1. NSArray *arr = [NSArray arrayWithObjects:@"xixi", @"haha", nil];     
  2.     [[NSUserDefaults standardUserDefaults] setObject:arr forKey:@"Array"];     
  3.     [[NSUserDefaults standardUserDefaults] synchronize];     
  4.      NSArray *arr2 = [[NSUserDefaults standardUserDefaults] objectForKey:@"Array"];     
  5.     NSString *s1 = [arr2 objectAtIndex:0];     
  6.     NSLog(@"%@", s1);    
  7.  
  8. NSArray *arr = [NSArray arrayWithObjects:@"xixi", @"haha", nil];  
  9.     [[NSUserDefaults standardUserDefaults] setObject:arr forKey:@"Array"];  
  10.     [[NSUserDefaults standardUserDefaults] synchronize];  
  11.      NSArray *arr2 = [[NSUserDefaults standardUserDefaults] objectForKey:@"Array"];  
  12.     NSString *s1 = [arr2 objectAtIndex:0];  
  13.     NSLog(@"%@", s1);  

但此時仍然可以很順利的顯示出s1為xixi 沒辦法只好上網找資料了,這時注意到我存儲的是自定義的結構,而和java的序列化類似,在序列化自定義類型的時候,必須要滿足可序列化的一系列條件,甚至包括序列化的規則,就Objective-C而言,必須要實現NSCoding協議

Objective-c代碼 

  1. - (void)encodeWithCoder:(NSCoder *)coder;     
  2. {     
  3.     [coder encodeObject:username_ forKey:@"username"];     
  4.     [coder encodeObject:password_ forKey:@"password"];     
  5.     [coder encodeBool:remember_ forKey:@"remember"];     
  6.     [coder encodeBool:autoLogin_ forKey:@"autologin"];     
  7. }     
  8.       
  9. - (id)initWithCoder:(NSCoder *)coder;     
  10. {     
  11.     self = [[LoginUserInfo alloc] init];     
  12.     if (self != nil)     
  13.     {     
  14.         self.username = [coder decodeObjectForKey:@"username"];     
  15.         self.password = [coder decodeObjectForKey:@"password"];     
  16.         self.remember = [coder decodeBoolForKey:@"remember"];     
  17.         self.autoLogin = [coder decodeBoolForKey:@"autologin"];     
  18.     }     
  19.         
  20.     return self;     
  21. }    
  22.  
  23. - (void)encodeWithCoder:(NSCoder *)coder;  
  24. {  
  25.     [coder encodeObject:username_ forKey:@"username"];  
  26.     [coder encodeObject:password_ forKey:@"password"];  
  27.     [coder encodeBool:remember_ forKey:@"remember"];  
  28.     [coder encodeBool:autoLogin_ forKey:@"autologin"];  
  29. }  
  30.    
  31. - (id)initWithCoder:(NSCoder *)coder;  
  32. {  
  33.     self = [[LoginUserInfo alloc] init];  
  34.     if (self != nil)  
  35.     {  
  36.         self.username = [coder decodeObjectForKey:@"username"];  
  37.         self.password = [coder decodeObjectForKey:@"password"];  
  38.         self.remember = [coder decodeBoolForKey:@"remember"];  
  39.         self.autoLogin = [coder decodeBoolForKey:@"autologin"];  
  40.     }  
  41.      
  42.     return self;  
  43. }   

然后在存取的時候再加上序列化以及反序列化的代碼

Objective-c代碼 

  1. - (NSArray *)getUserList     
  2. {     
  3.     NSArray *objectArray = nil;     
  4.     NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUserHistoryKey];     
  5.     if (data != nil)     
  6.     {     
  7.         NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];     
  8.         if (oldSavedArray != nil)     
  9.             objectArray = [[NSArray alloc] initWithArray:oldSavedArray];     
  10. //        else     
  11. //            objectArray = [[NSMutableArray alloc] init];     
  12.     }     
  13.     return objectArray;     
  14. }     
  15.     
  16. // 增加一個用戶要看是否是新用戶,如果是新的就增加,否則要修改     
  17. - (void)addUser:(LoginUserInfo *)info     
  18. {     
  19.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];     
  20.     NSArray *list = [self getUserList];     
  21.     NSArray *newList = nil;     
  22.     if (list == nil)     
  23.     {     
  24.         newList = [NSArray arrayWithObject:info];     
  25.     }     
  26.     else     
  27.     {     
  28.         NSMutableArray *mutList = [[NSMutableArray alloc] initWithCapacity:[list count]+1];     
  29.         [mutList addObject:info];     
  30.         for (LoginUserInfo *user in list)     
  31.         {     
  32.             if (![[info username] isEqualToString:[user username]])     
  33.             {     
  34.                 [mutList addObject:user];     
  35.             }     
  36.         }     
  37.         newList = [mutList mutableCopy];     
  38.     }     
  39.     [defaults setObject:[NSKeyedArchiver archivedDataWithRootObject:     
  40. newList] forKey:kUserHistoryKey];     
  41.     [defaults synchronize];     
  42.     [newList release];     
  43. }    
  44.  
  45. - (NSArray *)getUserList  
  46. {  
  47.     NSArray *objectArray = nil;  
  48.     NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUserHistoryKey];  
  49.     if (data != nil)  
  50.     {  
  51.         NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];  
  52.         if (oldSavedArray != nil)  
  53.             objectArray = [[NSArray alloc] initWithArray:oldSavedArray];  
  54. //        else  
  55. //            objectArray = [[NSMutableArray alloc] init];  
  56.     }  
  57.     return objectArray;  
  58. }  
  59.  
  60. // 增加一個用戶要看是否是新用戶,如果是新的就增加,否則要修改  
  61. - (void)addUser:(LoginUserInfo *)info  
  62. {  
  63.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];  
  64.     NSArray *list = [self getUserList];  
  65.     NSArray *newList = nil;  
  66.     if (list == nil)  
  67.     {  
  68.         newList = [NSArray arrayWithObject:info];  
  69.     }  
  70.     else  
  71.     {  
  72.         NSMutableArray *mutList = [[NSMutableArray alloc] initWithCapacity:[list count]+1];  
  73.         [mutList addObject:info];  
  74.         for (LoginUserInfo *user in list)  
  75.         {  
  76.             if (![[info username] isEqualToString:[user username]])  
  77.             {  
  78.                 [mutList addObject:user];  
  79.             }  
  80.         }  
  81.         newList = [mutList mutableCopy];  
  82.     }  
  83.     [defaults setObject:[NSKeyedArchiver archivedDataWithRootObject:  
  84. newList] forKey:kUserHistoryKey];  
  85.     [defaults synchronize];  
  86.     [newList release];  

這樣,總算可以持久化自定義結構了

和其他類似的語言一樣,基礎的序列化是個說大不大,說小不小的步驟,如果用純c的話,就可以要完全自己去存儲每個字節再讀出每個字節然后解釋出來,而現代語言基本上都做好了常見類型的持久化,包括更復雜的內置結構。

但即便如此,編譯器也絕無可能理解用戶自定義的結構,就像java里的 transient標注,還有持久化中內嵌持久化結構,持久化時的變量先后依賴關系等,持久化在網絡中的傳輸等等等等,這也遠遠超過了本文的范疇 objective-c的困難支持可能要加上一個內存的釋放方法不一等,確實很難便利的持久化

小結:剖析Objective-C持久化教程的內容介紹完了,希望本文對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-07-19 15:15:09

Objective-C 內存

2011-07-21 09:42:27

Objective-C 內存 Autoreleas

2013-04-11 14:37:36

Objective-CiOS內存管理系統自動創建新的aut

2013-04-11 14:32:00

Objective-CiOS開發內存管理@synthesize

2011-07-18 17:14:16

Objective-C 內存 Cocoa

2011-07-08 13:49:46

Objective-C UUID

2011-08-05 14:03:39

Objective-C 對象 模板

2013-04-11 14:16:57

Objective-CiOS開發內存管理

2011-08-22 09:48:16

WindowsObjective-C

2011-08-01 13:32:07

Objective-C Sqlite3 框架

2011-08-16 10:23:04

Objective-CNSAutoreleaXcode常用鍵

2011-07-29 16:08:31

Objective-C 內存

2013-04-11 13:57:27

Objective-CiOS開發內存管理

2011-08-10 18:07:29

Objective-C反射

2011-08-17 09:55:45

Objective-CCategory

2011-07-25 17:31:49

iPhone Objective-

2013-03-27 12:54:00

iOS開發Objective-C

2013-06-20 10:40:32

Objective-C實現截圖

2011-05-11 15:58:34

Objective-C

2011-05-11 11:20:26

Objective-C
點贊
收藏

51CTO技術棧公眾號

国产精品久久久久久久久久齐齐| 成人精品一区二区三区免费| 亚洲国产一区二区三区高清| 亚洲欧美色图片| 亚洲污视频在线观看| av大片在线| 久久综合久色欧美综合狠狠| 91精品在线一区| 国产精品免费av一区二区| 成人羞羞动漫| 亚洲国产精品久久久久| 国产一伦一伦一伦| 国产美女精品写真福利视频| 国产精品国产三级国产普通话蜜臀| 国产99在线免费| 国内免费精品视频| 一区二区国产在线| 亚洲欧美国产va在线影院| 午夜激情视频网| 性感美女一区二区在线观看| 亚洲电影激情视频网站| 一本久道久久综合| 手机亚洲第一页| 国产成人在线影院| 国产日韩欧美夫妻视频在线观看| 亚洲精品男人的天堂| 欧美日韩国产精品一区二区亚洲| 中文字幕日韩在线播放| 日韩片在线观看| 久久久精品区| 欧美久久免费观看| 亚洲 中文字幕 日韩 无码| 波多野结衣中文在线| 中文字幕一区三区| 亚洲国产日韩美| 男女污视频在线观看| 成人av在线资源网站| 91九色露脸| 国产日韩免费视频| 久久99在线观看| 国产男女猛烈无遮挡91| 国产女优在线播放| 久久婷婷麻豆| 热久久这里只有精品| 久久久久久久黄色片| 亚洲午夜伦理| 久久人人爽人人| 国产亚洲精品久久久久久无几年桃 | 97国产成人高清在线观看| 亚洲人成在线观| 中文字幕一区二区人妻在线不卡| 国产成人在线中文字幕| 日韩欧美中文字幕精品| 国产三级精品三级在线| 日韩伦理一区二区| 欧美男人的天堂一二区| 777视频在线| 国产精品日本一区二区三区在线| 欧美日本在线看| 亚洲一区二区三区观看| 国产电影一区二区| 日韩欧美激情一区| www.啪啪.com| 亚洲精品**不卡在线播he| 亚洲精品一区二区网址| 在线国产视频一区| 色婷婷亚洲mv天堂mv在影片| 俺去亚洲欧洲欧美日韩| 成年人av电影| 国产偷自视频区视频一区二区| 欧美孕妇与黑人孕交| 男人天堂2024| 久久精品国产99久久6| 91免费观看| 色一情一乱一区二区三区| 99精品欧美一区二区三区小说| 久久亚洲国产精品日日av夜夜| 精华区一区二区三区| 日本一区二区不卡视频| 99热这里只有精品免费| 狠狠躁少妇一区二区三区| 91福利小视频| 亚洲a级黄色片| 97视频一区| 亚洲欧美在线一区| 三级黄色在线观看| 亚洲青涩在线| 国产精品视频成人| 亚洲AV无码精品国产| 91碰在线视频| 国产手机视频在线观看| 美女高潮在线观看| 欧美久久久久久久久久| 亚洲一区二区在线免费| 人人狠狠综合久久亚洲婷婷 | 大黄网站在线观看| 色屁屁一区二区| 久久久精品视频国产| 欧美福利在线播放网址导航| 在线免费看av不卡| 日本午夜小视频| 捆绑调教美女网站视频一区| 国产精品免费一区二区三区在线观看| 蜜桃免费在线| 一区二区三区 在线观看视频| 精品人妻一区二区三区四区在线| 国产精久久久| 亚洲日本成人网| 久久免费视频播放| 蜜桃av噜噜一区| 久久久久久国产精品免费免费| 日本成a人片在线观看| 欧美色播在线播放| 91网址在线观看精品| 伊人春色精品| 亚洲91精品在线观看| 91麻豆视频在线观看| 2020国产精品自拍| 国产日本在线播放| 色婷婷成人网| 一区二区三区国产在线观看| 国产精品日日夜夜| 国产综合成人久久大片91| 蜜桃999成人看片在线观看| 欧美性猛片xxxxx免费中国| 欧美性猛片aaaaaaa做受| 极品粉嫩小仙女高潮喷水久久| 亚洲午夜电影| 99久久免费国| a级片国产精品自在拍在线播放| 欧美性色综合网| 成人免费网站黄| 一区二区日韩免费看| 豆国产97在线| 色婷婷视频在线观看| 欧美精品在线视频| 亚洲毛片亚洲毛片亚洲毛片| 久久青草久久| 欧美一区2区三区4区公司二百| 香蕉伊大人中文在线观看| 亚洲国产成人91精品| 久久精品99国产精| 国产精品乡下勾搭老头1| 一区二区在线观看网站| 四虎成人精品一区二区免费网站| 中日韩美女免费视频网址在线观看| 波多野结衣视频网站| 26uuu亚洲综合色| 欧美黄色免费影院| 自拍亚洲一区| 国产精品精品视频| yiren22亚洲综合伊人22| 在线观看一区不卡| 熟女少妇内射日韩亚洲| 奇米综合一区二区三区精品视频| 亚洲bbw性色大片| 色综合久久久| 久久伊人91精品综合网站| 国产视频在线一区| 亚洲国产日产av| 日韩av无码一区二区三区不卡| 日韩午夜免费| 日产精品一线二线三线芒果 | 超碰97人人在线| 国产理论电影在线| 亚洲精品电影在线观看| 欧美男人亚洲天堂| 国产精品福利一区二区| 久久久久无码精品| 国产一区二区三区四区三区四 | 一级网站在线观看| 精品二区久久| 欧美一区二区福利| 91精品亚洲一区在线观看| 欧美精品在线免费播放| 日本xxxxxwwwww| 在线一区二区三区四区五区| 精品国产国产综合精品| 国产69精品久久久久777| 亚洲国产精品久久久久婷蜜芽| 欧美精品一区二区三区精品| 91丨九色丨国产在线| 国产嫩草在线视频| 亚洲欧美一区二区三区四区| 亚洲天堂aaa| 亚洲国产精品久久一线不卡| 久久久久亚洲av成人无码电影| 蜜臀久久99精品久久久久宅男 | 精品国产免费人成电影在线观看四季| 一区二区三区视频免费看| 欧美国产成人精品| 国产xxxx视频| 久久国产欧美日韩精品| 中文字幕无码精品亚洲资源网久久| 妖精视频一区二区三区| 亚洲综合中文字幕在线| 另类激情视频| 欧美精品videosex牲欧美| 高清在线观看av| 亚洲国产精品字幕| 91精品人妻一区二区三区果冻| 亚洲va韩国va欧美va精品 | 日韩在线观看电影完整版高清免费悬疑悬疑| 91在线高清视频| sese综合| 久久久影视精品| 日本中文在线观看| 日韩精品极品在线观看| 99久久99久久久精品棕色圆| 在线精品视频免费播放| 日本三级欧美三级| 中文字幕一区在线观看| 免费看污片的网站| 99久久综合国产精品| 老女人性生活视频| 久久精品国产精品亚洲精品| 久久久免费视频网站| 好看的日韩av电影| 在线视频欧美一区| 欧美极品中文字幕| 精品在线观看一区二区| 一区二区三区在线资源| 亚洲aaaaaa| 日本午夜精品久久久久| 国产精品久久av| 成人美女大片| 97超级碰碰人国产在线观看| 欧美人动性xxxxz0oz| 久久精品视频99| 91福利在线视频| 在线观看亚洲区| 国产主播福利在线| 日韩精品免费在线播放| 国 产 黄 色 大 片| 欧美va亚洲va在线观看蝴蝶网| 国产裸体无遮挡| 亚洲大尺度在线观看| 裸体在线国模精品偷拍| 成人精品视频一区二区| 99成人免费视频| 91免费黄视频| 伊人久久大香线蕉综合热线| 喜爱夜蒲2在线| 中文字幕一区二区精品区| 在线视频不卡国产| 99久久婷婷| 免费看av软件| 91精品啪在线观看国产81旧版| 在线视频91| 欧美日韩第一区| 成人在线国产视频| 伊人激情综合| 国产综合中文字幕| 国产精品美女久久久| 日韩一级在线免费观看| 久久亚洲风情| 网站一区二区三区| 久久99久久99| 少妇丰满尤物大尺度写真| 国产成人丝袜美腿| 日韩av无码一区二区三区不卡 | 欧美特级黄色录像| 国产亚洲精品aa| 熟女av一区二区| 亚洲一区二区欧美日韩| 日韩欧美三级在线观看| 欧美性猛交xxxx富婆| 波多野结衣爱爱| 制服丝袜一区二区三区| 亚洲高清视频在线播放| 日韩成人av在线| p色视频免费在线观看| 日韩中文在线观看| 日本高清在线观看视频| 992tv成人免费影院| 国产精品99精品一区二区三区∴| 成人在线观看视频网站| 久久精品亚洲成在人线av网址| 日韩欧美精品一区二区| 亚洲精品网址| 浮妇高潮喷白浆视频| 蜜桃久久久久久久| 乱码一区二区三区| 久久老女人爱爱| 日韩欧美国产成人精品免费| 亚洲香肠在线观看| 国产精品第六页| 日韩一区二区三区高清免费看看| 亚洲欧美色视频| 久久久精品久久久| 综合久久2023| 999日本视频| 激情五月综合网| 妞干网视频在线观看| 日韩高清一区二区| 熟妇高潮一区二区| 国产精品午夜在线观看| 动漫精品一区一码二码三码四码| 欧美色成人综合| 手机看片国产1024| 久久综合伊人77777蜜臀| 亚洲女色av| 电影午夜精品一区二区三区| 不卡在线一区| 大j8黑人w巨大888a片| 国产尤物一区二区| 国产sm调教视频| 五月天中文字幕一区二区| 中文字幕乱码一区二区| 日韩av在线天堂网| 9191在线播放| 国产欧美久久一区二区| 亚洲桃色综合影院| 亚洲熟妇无码一区二区三区导航| 久久99国产精品久久99| 18禁裸乳无遮挡啪啪无码免费| 亚洲欧美色一区| 中文字幕 视频一区| 亚洲精品久久久久久久久久久久久 | 日韩精品福利| 欧美高清视频免费观看| 2020国产精品小视频| 色综合视频二区偷拍在线| 亚洲欧美日韩专区| 91视频啊啊啊| 污片在线观看一区二区| 性欧美一区二区三区| 日韩亚洲综合在线| 国产精品4hu.www| 日韩欧美一区二区三区四区五区| 欧美亚洲在线| 五月婷婷综合在线观看| 五月天精品一区二区三区| 亚洲第一大网站| 欧美丰满片xxx777| 91成人短视频| 黄色网在线视频| 成人永久aaa| 国语对白一区二区| 欧美精品一区二区在线播放 | 国产精品白丝jk喷水视频一区| 天堂av一区二区三区在线播放| 9久久9毛片又大又硬又粗| 成人91在线观看| 粉嫩aⅴ一区二区三区| 日韩国产激情在线| 中文日产幕无线码一区二区| 欧美精品欧美精品系列c| 久久亚洲风情| 99久久久无码国产精品不卡| 欧美人妇做爰xxxⅹ性高电影| av网站大全在线观看| 国产日产欧美精品| 亚洲综合婷婷| www男人天堂| 黄色一区二区在线| 国产原创av在线| 国产在线观看91精品一区| 久久久久久久久久久9不雅视频| 91精品视频国产| 亚洲福利电影网| 欧美亚洲日本| 国产在线视频不卡| 欧美一区成人| 中文字幕一区三区久久女搜查官| 精品二区三区线观看| 九一国产在线| 亚洲一区二区三区四区在线播放 | 国产大片精品免费永久看nba| 日韩电影免费网址| 杨幂一区二区国产精品| 亚洲1区2区3区4区| 国产视频第一区| 91麻豆国产语对白在线观看| 91久久综合| 女女互磨互喷水高潮les呻吟| 欧美一区二区三区在线观看| av影片在线| 日韩精品无码一区二区三区| 国产一区二区三区在线观看免费视频| 亚洲一区 视频| 中文国产亚洲喷潮| silk一区二区三区精品视频 | 在线成人免费网站| 免费精品一区二区三区在线观看| 奇米精品一区二区三区| 国产精品色噜噜| 日批视频在线播放| 国产日韩在线亚洲字幕中文| 在线国产精品一区| 老司机福利在线观看| 亚洲国产精品人人爽夜夜爽| 成人国产激情| 国产精品又粗又长| 国产精品久久久久久久久久久免费看| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 国产精品老牛影院在线观看| 亚洲日本激情| 黑鬼狂亚洲人videos| 亚洲片在线观看|