ios中存储小数据的类NSUSerDefault只能存储NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL类型,要是存储其他类型的对象,会提示或报错“Attempt to set a non-property-list object”。其实存储自定义类型对象也是可以的,步骤如下:
1.自定义类需继承NSCoding:
2.存储的时候用归档转换成NSData,取出的时候从NSData再转换成需要的类型
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self userdefaultTest]; } #pragma mark -NSUserDefault存储自定义对象 -(void)userdefaultTest { CustomClass *cc = [[CustomClass alloc] init]; cc.name = @"helly"; cc.age = 24; NSUserDefaults *userd = [NSUserDefaults standardUserDefaults]; NSData *data = [NSKeyedArchiver archivedDataWithRootObject:cc]; [userd setObject:data forKey:@"person"]; [userd synchronize]; CustomClass *ccc = (CustomClass *)[NSKeyedUnarchiver unarchiveObjectWithData:[userd objectForKey:@"person"]]; NSLog(@"ccc=%@",ccc); }