什么序列化反序列化以及自定义类型归档什么的,一点个人看法

     项目中最近用到了一点关于存NSUserdefault的问题,因为是自定义的对象,而NSUserdefault系统只支持NSString, NSNumber, NSDate, NSArray, NSDictionary,于是在存对象时就出现了问题。然后看了一下,其实很基本的东西,主要好久不用了,有点生疏。也算不上什么原理吧,就个人的一点小看法。明天去项目跑跑看。

    首先你要归档某个对象的话,首先要在其所在的类中重写两个方法,并且遵守<NSCoding>协议

  1. - (id) initWithCoder: (NSCoder *)coder  
  2. {  
  3.     if (self = [super init])  
  4.     {  
  5.         self._firstName = [coder decodeObjectForKey:@"_firstName"];  
  6.         self._lastName = [coder decodeObjectForKey:@"_lastName"];  
  7.     }  
  8.     return self;  
  9. }  
  10. - (void) encodeWithCoder: (NSCoder *)coder  
  11. {  
  12.     [coder encodeObject:_firstName forKey:@"_firstName"];  
  13.     [coder encodeObject:_lastName forKey:@"_lastName"];  
  14.       
  15. }  
然后以Data为中介,其实最终相当于你存的时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] ;  

你可能感兴趣的:(什么序列化反序列化以及自定义类型归档什么的,一点个人看法)