自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iPhone文件操作之NSUserDefaults讀取和寫入自定義對象

移動開發(fā) iOS
iPhone文件操作之NSUserDefaults讀取和寫入自定義對象是本文要介紹的內容,主要講述NSUserDefaults讀取和寫入自定義對象,來看本文內容。

iPhone文件操作之NSUserDefaults讀取和寫入自定義對象是本文要介紹的內容,主要講述NSUserDefaults讀取和寫入自定義對象,不多說,先來看內容。NSUserDefaults可以存取一些短小的信息,比如存入再讀出一個字符串到NSUserDefaults

  1. NSString *string = [NSString stringWithString @"hahaha"];     
  2. NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];     
  3. [ud setObject:string forKey:@"myKey"];     
  4. NSString *value;     
  5. value = [ud objectForKey:"myKey"];   

但是并不是所有的東西都能往里放的。NSUserDefaults只支持: NSString, NSNumber, NSDate, NSArray, NSDictionary.

如果把一個自定義的類存到一個NSArray里,然后再存到NSUserDefaults里也是不能成功的。不信可以試試,如果你成功的請告訴我。

那怎么辦呢?

我找到的方法是,讓這個自定義類實現<NSCoding>協(xié)議中的- (id) initWithCoder: (NSCoder *)coder方法和- (void) encodeWithCoder: (NSCoder *)coder方法(obj-c的協(xié)議protocol就是java的接口interface,就是C++的純虛函數),然后把該自定義的類對象編碼到 NSData中,再從NSUserDefaults中進行讀取。

假設有這樣一個簡單的類對象

  1. @interface BusinessCard : NSObject <NSCoding>{     
  2.     NSString *_firstName;     
  3.     NSString *_lastName;     
  4. }     
  5. @property (nonatomic, retain) NSString *_firstName;     
  6. @property (nonatomic, retain) NSString *_lastName;     
  7. @end;     
  8.      
  9. @implementation BusinessCard     
  10. @synthesize _firstName, _lastName;     
  11. - (void)dealloc{     
  12.     [_firstName release];     
  13.     [_lastName release];     
  14.     [super dealloc];     
  15. }     
  16. - (id) initWithCoder: (NSCoder *)coder     
  17. {     
  18.     if (self = [super init])     
  19.     {     
  20.         self._firstName = [coder decodeObjectForKey:@"_firstName"];     
  21.         self._lastName = [coder decodeObjectForKey:@"_lastName"];     
  22.     }     
  23.     return self;     
  24. }     
  25. - (void) encodeWithCoder: (NSCoder *)coder     
  26. {     
  27.     [coder encodeObject:_firstName forKey:@"_firstName"];     
  28.     [coder encodeObject:_lastName forKey:@"_lastName"];        
  29. }     
  30. @end   

然后再存取時通過NSData做載體:

  1. BusinessCard *bc = [[BusinessCard alloc] init];     
  2. NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];     
  3. NSData *udObject = [NSKeyedArchiver archivedDataWithRootObject:bc];     
  4. [ud setObject:udObject forKey:@"myBusinessCard"];     
  5. [bc release];     
  6. udObject = nil;     
  7. udObject = [ud objectForKey:@"myBusinessCard"];     
  8. bc = [NSKeyedUnarchiver unarchiveObjectWithData:udObject] ;  

 

以上的代碼時由另一個程序中截取的,沒有測試過,但意思就是這樣了。如果一個自定義類中由另一個自定義類對象,那么所有嵌套的類都要實現<NSCoding>。

小結:iPhone文件操作之NSUserDefaults讀取和寫入自定義對象的內容介紹完了,希望本文對你有所幫助!

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

2011-08-18 09:44:33

iPhone SDK儀表控件UIDialView

2023-07-03 08:29:11

BannerSpringBoot

2009-07-01 14:32:37

JSP文件操作

2009-08-10 16:58:45

ASP.NET安裝部署

2011-08-11 11:51:07

iPhone鍵盤

2011-08-12 18:18:03

iPhone開發(fā)UIPageContr按鈕

2009-08-05 18:01:20

C#自定義異常處理

2015-02-11 17:49:35

Android源碼自定義控件

2023-08-10 17:14:52

鴻蒙自定義彈窗

2022-06-20 15:43:45

switch開關鴻蒙

2011-09-08 13:56:41

ASP.NET性能

2021-10-26 10:07:02

鴻蒙HarmonyOS應用

2022-06-30 14:02:07

鴻蒙開發(fā)消息彈窗組件

2011-08-02 11:17:13

iOS開發(fā) View

2022-07-15 16:45:35

slider滑塊組件鴻蒙

2023-01-15 17:11:44

Rust

2022-09-20 07:01:50

對象初始化代碼

2009-11-12 16:14:28

ADO.NET自定義對

2023-10-31 12:59:00

C++編程語言

2011-08-18 17:32:55

iPhone開發(fā)Table Cell
點贊
收藏

51CTO技術棧公眾號