ios 使用NSUserDefaults保存自定义对象

来源:互联网 发布:社交软件下载 编辑:程序博客网 时间:2024/05/18 04:57

自定义对象:

.h文件

#import <Foundation/Foundation.h>    @interface MyObject : NSObject  {      NSNumber* lowValue;      NSNumber* highValue;            NSString* titleString;  }  @property(nonatomic, retain)NSNumber* lowValue;  @property(nonatomic, retain)NSNumber* highValue;    @property(nonatomic, retain)NSString* titleString;  @end  

.m文件:

#import "MyObject.h"    @implementation MyObject  @synthesize lowValue, highValue, titleString;  - (void)encodeWithCoder:(NSCoder *)encoder   {      [encoder encodeObject:self.lowValue forKey:@"lowValue"];      [encoder encodeObject:self.highValue forKey:@"highValue"];      [encoder encodeObject:self.titleString forKey:@"titleString"];  }  - (id)initWithCoder:(NSCoder *)decoder   {      if(self = [super init])      {          self.lowValue = [decoder decodeObjectForKey:@"lowValue"];          self.highValue = [decoder decodeObjectForKey:@"highValue"];          self.titleString = [decoder decodeObjectForKey:@"titleString"];      }      return  self;  }    @end 

保存单个MyObject方法:

- (void)saveCustomObject:(MyObject *)obj   {      NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:obj];      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];      [defaults setObject:myEncodedObject forKey:@"myEncodedObjectKey"];  }  - (MyObject *)loadCustomObjectWithKey:(NSString *)key   {      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];      NSData *myEncodedObject = [defaults objectForKey:key];      MyObject *obj = (MyObject *)[NSKeyedUnarchiver unarchiveObjectWithData: myEncodedObject];      return obj;  }    保存:          MyObject* testObj = [[MyObject alloc] init];          testObj.lowValue  =[NSNumber  numberWithFloat:122.2 ];          testObj.highValue = [NSNumber numberWithFloat:19888 ];          testObj.titleString = @“baoyu”;    读取:      MyObject* obj = [self loadCustomObjectWithKey:@"myEncodedObjectKey"];      NSLog(@"%f, %f, %@", [obj.lowValue floatValue], [obj.highValue floatValue], obj.titleString); 

保存多个MyObject方法:

保存:      NSMutableArray* array = [[NSMutableArray alloc] init];      for(int i=0; i<3; i++)      {          MyObject* testObj = [[MyObject alloc] init];          testObj.lowValue  =[NSNumber  numberWithFloat:122.2+i ];          testObj.highValue = [NSNumber numberWithFloat:19888+i ];          testObj.titleString = [NSString stringWithFormat:@"BAOYU%d", i];                    [array addObject:testObj];        }   [[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:array] forKey:@"myarray"];      读取:          NSData* data  = [[NSUserDefaults standardUserDefaults] objectForKey:@"myarray"];              NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];      for(MyObject* obj in oldSavedArray)      {          NSLog(@"%f, %f, %@", [obj.lowValue floatValue], [obj.highValue floatValue], obj.titleString);      }  

转载自:http://zani.iteye.com/blog/1431239

0 0
原创粉丝点击