// // RootViewController.m #import "RootViewController.h" @interface RootViewController () { NSMutableArray * dataSource; } @end @implementation RootViewController -(void)createUI { NSArray * arr = @[@"NSNumber数据:",@"integer:",@"float:",@"double:",@"NSString数据:",@"NSDate数据:",@"NSArray数据:",@"NSDictionary数据:"]; for(int i = 0;i<[arr count];i++) { UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(0, 70 + 40 * i, 140, 30)]; label.text = arr[i]; label.textAlignment = NSTextAlignmentRight; [self.view addSubview:label]; [label release]; } for(int i = 1;i<[arr count];i++) { UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(145, 70 + 40 * i, 170, 30)]; label.tag = i; label.textAlignment = NSTextAlignmentLeft; label.backgroundColor = [UIColor cyanColor]; [self.view addSubview:label]; [label release]; } } //向userDefaults里面写入数据 -(void)writeUserDefaults { NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; NSInteger i = 100; float f = 50.0f; double d = 1000.0; NSString * string = @"字符串"; NSArray * arr = @[@"hello",@"world"]; NSDictionary * dic = @{@"name":@"test",@"age":@"19"}; NSDate * date = [NSDate date]; //存入的数据 无论是可变的还是不可变的 读出来以后都是不可变的数据 [defaults setInteger:i forKey:@"int"]; [defaults setFloat:f forKey:@"float"]; [defaults setDouble:d forKey:@"double"]; //基本类型的数据存放在userDefaults以后都会自动转化成NSNumber [defaults setObject:string forKey:@"string"]; [defaults setObject:arr forKey:@"array"]; [defaults setObject:dic forKey:@"dic"]; [defaults setObject:date forKey:@"date"]; //写入磁盘 [defaults synchronize]; } //读数据 -(void)readUserDefaults { NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; dataSource = [[NSMutableArray alloc]init]; NSString * intStr = [NSString stringWithFormat:@"%@",[defaults objectForKey:@"int"]]; NSString * floatStr = [NSString stringWithFormat:@"%f",[defaults floatForKey:@"float"]]; NSString * doubleStr = [NSString stringWithFormat:@"%lf",[defaults doubleForKey:@"double"]]; NSString * stringStr = [defaults objectForKey:@"string"]; NSArray * arr = [defaults objectForKey:@"array"]; NSString * arrStr = [arr componentsJoinedByString:@" "]; NSDictionary * dic = [defaults objectForKey:@"dic"]; NSString * dicStr = [NSString stringWithFormat:@"name:%@,age:%@",[dic objectForKey:@"name"],[dic objectForKey:@"age"]]; NSDate * date = [defaults objectForKey:@"date"]; NSDateFormatter * formatter = [[NSDateFormatter alloc]init]; formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSString * dateStr = [formatter stringFromDate:date]; [formatter release]; [dataSource addObject:intStr]; [dataSource addObject:floatStr]; [dataSource addObject:doubleStr]; [dataSource addObject:stringStr]; [dataSource addObject:dateStr]; [dataSource addObject:arrStr]; [dataSource addObject:dicStr]; } - (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title = @"UserDefualts的用法"; self.view.backgroundColor = [UIColor brownColor]; UIBarButtonItem * item = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(pressBarBtn:)]; self.navigationItem.rightBarButtonItem = item; [item release]; [self createUI]; [self writeUserDefaults]; [self readUserDefaults]; } -(void)pressBarBtn:(id)sender { //查找沙盒目录的路径 NSArray * arr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString * path = [arr objectAtIndex:0]; NSLog(@"%@",path); for(int i = 0;i<[dataSource count];i++) { UILabel * lable = (UILabel *)[self.view viewWithTag:i + 1]; lable.text = dataSource[i]; } } @end