欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

IOS 中NSUserDefaults讀取和寫入自定義對象的實現方法

 更新時間:2017年09月18日 10:53:48   作者:chyroger  
這篇文章主要介紹了IOS 中NSUserDefaults讀取和寫入自定義對象的實現方法的相關資料,希望通過本文大家能夠理解掌握這部分內容,需要的朋友可以參考下

IOS 中NSUserDefaults讀取和寫入自定義對象的實現方法

NSUserDefaults可以存取一些短小的信息。

比如存入再讀出一個字符串到NSUserDefaults:

NSString *string = [NSString stringWithString @"hahaha"]; 
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; 
[ud setObject:string forKey:@"myKey"]; 
NSString *value; 
value = [ud objectForKey:"myKey"]; 
 

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

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

那怎么辦呢? 

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

粘代碼:

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

@interface BusinessCard : NSObject <NSCoding>{ 
  NSString *_firstName; 
  NSString *_lastName; 
} 
@property (nonatomic, retain) NSString *_firstName; 
@property (nonatomic, retain) NSString *_lastName; 
@end; 
 
@implementation BusinessCard 
@synthesize _firstName, _lastName; 
- (void)dealloc{ 
  [_firstName release]; 
  [_lastName release]; 
  [super dealloc]; 
} 
- (id) initWithCoder: (NSCoder *)coder 
{ 
  if (self = [super init]) 
  { 
    self._firstName = [coder decodeObjectForKey:@"_firstName"]; 
    self._lastName = [coder decodeObjectForKey:@"_lastName"]; 
  } 
  return self; 
} 
- (void) encodeWithCoder: (NSCoder *)coder 
{ 
  [coder encodeObject:_firstName forKey:@"_firstName"]; 
  [coder encodeObject:_lastName forKey:@"_lastName"]; 
   
} 
 
@end 

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

BusinessCard *bc = [[BusinessCard alloc] init]; 
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; 
NSData *udObject = [NSKeyedArchiver archivedDataWithRootObject:bc]; 
[ud setObject:udObject forKey:@"myBusinessCard"]; 
[bc release]; 
udObject = nil; 
udObject = [ud objectForKey:@"myBusinessCard"]; 
bc = [NSKeyedUnarchiver unarchiveObjectWithData:udObject] ; 

以上的代碼時由另一個程序中截取的,沒有測試過,但意思就是這樣了。

如果一個自定義類中由另一個自定義類對象,那么所有嵌套的類都要實現<NSCoding>。

如有疑問請留言或到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • iOS開發(fā)UICollectionView實現拖拽效果

    iOS開發(fā)UICollectionView實現拖拽效果

    這篇文章主要為大家詳細介紹了iOS開發(fā)UICollectionView實現拖拽效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • iOS數據持久化KeyChain數據操作詳解

    iOS數據持久化KeyChain數據操作詳解

    這篇文章主要為大家介紹了iOS數據持久化KeyChain,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • iOS使用AVFoundation展示視頻

    iOS使用AVFoundation展示視頻

    這篇文章主要為大家詳細介紹了iOS使用AVFoundation展示視頻,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • iOS開發(fā)常用線程安全鎖

    iOS開發(fā)常用線程安全鎖

    這篇文章主要為大家介紹了iOS開發(fā)常用線程安全鎖示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Flutter?Module添加到iOS項目示例詳解

    Flutter?Module添加到iOS項目示例詳解

    這篇文章主要為大家介紹了Flutter?Module添加到iOS項目示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 詳解IOS 單例的兩種方式

    詳解IOS 單例的兩種方式

    這篇文章主要介紹了詳解IOS 單例的兩種方式的相關資料,希望通過本文大家能夠理解掌握IOS 的兩種單例的使用方法,需要的朋友可以參考下
    2017-09-09
  • iOS 真機調試微信小程序

    iOS 真機調試微信小程序

    下面介紹下如何使用 Xcode、Reveal 和 Safari 來真機調試 iOS 上的小程序。感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-08-08
  • iOS中自帶超強中文分詞器的實現方法

    iOS中自帶超強中文分詞器的實現方法

    這篇文章主要給大家介紹了關于iOS中自帶超強中文分詞器的實現方法,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • iOS支付寶、微信、銀聯支付集成封裝調用(上)

    iOS支付寶、微信、銀聯支付集成封裝調用(上)

    本篇文章給大家分享了iOS支付寶、微信、銀聯支付集成封裝調用的相關代碼和實例,有興趣的朋友學習下。
    2018-04-04
  • IOS開發(fā)之判斷兩個數組中數據是否相同實例詳解

    IOS開發(fā)之判斷兩個數組中數據是否相同實例詳解

    這篇文章主要介紹了IOS開發(fā)之判斷兩個數組中數據是否相同實例詳解的相關資料,需要的朋友可以參考下
    2017-02-02

最新評論