userDefaults

//
//  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
原文地址:https://www.cnblogs.com/sayimba/p/5672806.html