• UserDefaultes 数据存储使用


    #import "RootViewController.h"
    
    @interface RootViewController ()
    @end
    
    @implementation RootViewController
    {
         UILabel *txtInteger;
         UILabel *txtFloat;
         UILabel *txtDouble;
         UILabel *txtNSString;
         UILabel *txtNSDate;
         UILabel *txtNSArray;
         UILabel *txtNSDictionary;
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        [self  creatLable];
        [self creatclearbtn];
        [self  saveNSUserDefaults];
        [self  readNSUserDefaults];
    }
    
    
    //保存数据到NSUserDefaults
    -(void)saveNSUserDefaults
    {
        
        int myInteger = 1000;
        float myFloat = 60.0f;
        double myDouble = 30.0;
        
        NSString *myString = @"我的字符";
        NSDate *myDate = [NSDate date];
        NSArray *myArray = [NSArray arrayWithObjects:@"hello", @"world",@"one",@"dream", nil];
        NSDictionary *myDictionary = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"enuo", @"20", nil] forKeys:[NSArray arrayWithObjects:@"name", @"age", nil]];
        
        //将上述数据全部存储到NSUserDefaults中
        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        //存储时,除NSNumber类型使用对应的类型意外,其他的都是使用setObject:forKey:
        [userDefaults setInteger:myInteger forKey:@"myInteger"];
        [userDefaults setFloat:myFloat forKey:@"myFloat"];
        [userDefaults setDouble:myDouble forKey:@"myDouble"];
    
        [userDefaults setObject:myString forKey:@"myString11"];
        [userDefaults setObject:myDate forKey:@"myDate"];
        [userDefaults setObject:myArray forKey:@"myArray"];
        [userDefaults setObject:myDictionary forKey:@"myDictionary"];
        
        //这里建议同步存储到磁盘中,但是不是必须的
        [userDefaults synchronize];
        
    }
    
    
    //从NSUserDefaults中读取数据
    -(void)readNSUserDefaults
    {
        NSUserDefaults *userDefaultes = [NSUserDefaults standardUserDefaults];
        //读取数据到各个label中
        //读取整型int类型的数据
        NSInteger myInteger = [userDefaultes integerForKey:@"myInteger"];
        txtInteger.text = [NSString stringWithFormat:@"整形:%d",myInteger];
        
        //读取浮点型float类型的数据
        float myFloat = [userDefaultes floatForKey:@"myFloat"];
        txtFloat.text = [NSString stringWithFormat:@"浮点型:%f",myFloat];
        
        //读取double类型的数据
        double myDouble = [userDefaultes doubleForKey:@"myDouble"];
        txtDouble.text = [NSString stringWithFormat:@"%f",myDouble];
        
        //读取NSString类型的数据
        NSString *myString = [userDefaultes stringForKey:@"myString11"];
        txtNSString.text = myString;
        
        //读取NSDate日期类型的数据
        NSDate *myDate = [userDefaultes valueForKey:@"myDate"];
        NSDateFormatter *df = [[NSDateFormatter alloc] init];
        [df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        txtNSDate.text = [NSString stringWithFormat:@"日期:%@",[df stringFromDate:myDate]];
        
        //读取数组NSArray类型的数据
        NSArray *myArray = [userDefaultes arrayForKey:@"myArray"];
        NSString *myArrayString = [[NSString alloc] init];
        for(NSString *str in myArray)
        {
            NSLog(@"str= %@",str);
            myArrayString = [NSString stringWithFormat:@"%@  %@", myArrayString, str];
            [myArrayString stringByAppendingString:str];
            //        [myArrayString stringByAppendingFormat:@"%@",str];
            NSLog(@"myArrayString=%@",myArrayString);
        }
        txtNSArray.text = myArrayString;
        
        //读取字典类型NSDictionary类型的数据
        NSDictionary *myDictionary = [userDefaultes dictionaryForKey:@"myDictionary"];
        NSString *myDicString = [NSString stringWithFormat:@"name:%@, age:%d",[myDictionary valueForKey:@"name"], [[myDictionary valueForKey:@"age"] integerValue]];
        txtNSDictionary.text = myDicString;
    }
    
    //清除数据UserDefaultes
    -(void)ClearUserDefaultes
    {
        NSString   *appDomain=[[NSBundle   mainBundle]bundleIdentifier];
        [[NSUserDefaults  standardUserDefaults]removePersistentDomainForName:appDomain];
        [self  readNSUserDefaults];
    
    }
    
    
    //清除按钮
    -(void)creatclearbtn
    {
        UIButton  *btn=[UIButton  buttonWithType:UIButtonTypeRoundedRect];
        btn.frame=CGRectMake(100, 400, 100, 30);
        [btn setTitle:@"清除" forState:UIControlStateNormal];
        btn.backgroundColor=[UIColor  yellowColor];
        [self.view  addSubview:btn];
        [btn  addTarget:self action:@selector(ClearUserDefaultes) forControlEvents:UIControlEventTouchDown];
    }
    
    //创建Label
    -(void)creatLable
    {
        txtInteger=[[UILabel  alloc]initWithFrame:CGRectMake(0, 40, 200, 30)];
        txtInteger.backgroundColor=[UIColor  brownColor];
        [self.view  addSubview:txtInteger];
        
        txtFloat=[[UILabel  alloc]initWithFrame:CGRectMake(0,80, 200, 30)];
        txtFloat.backgroundColor=[UIColor  brownColor];
        [self.view  addSubview:txtFloat];
        
        txtDouble=[[UILabel  alloc]initWithFrame:CGRectMake(0, 120, 200, 30)];
        txtDouble.backgroundColor=[UIColor  brownColor];
        [self.view  addSubview:txtDouble];
        
        txtNSString=[[UILabel  alloc]initWithFrame:CGRectMake(0, 160, 200, 30)];
        txtNSString.backgroundColor=[UIColor  brownColor];
        [self.view  addSubview:txtNSString];
        
        txtNSDate=[[UILabel  alloc]initWithFrame:CGRectMake(0, 200, 200, 30)];
        txtNSDate.backgroundColor=[UIColor  brownColor];
    
        [self.view  addSubview:txtNSDate];
        
        txtNSArray=[[UILabel  alloc]initWithFrame:CGRectMake(0, 240, 200, 30)];
        txtNSArray.backgroundColor=[UIColor  brownColor];
        [self.view  addSubview:txtNSArray];
        
        txtNSDictionary=[[UILabel  alloc]initWithFrame:CGRectMake(0, 280, 200, 30)];
        txtNSDictionary.backgroundColor=[UIColor  brownColor];
        [self.view  addSubview:txtNSDictionary];
    
    }
    

     

     

     

  • 相关阅读:
    JS: 子项可以来回交换的两个下拉列表
    DOM事件
    DOM基础2——元素
    DOM基础1
    JS: 随机点名程序与万年历
    G_S男女匹配算法(算法的第一个程序2016.09.19)
    Java IO流详尽解析(大神之作)
    细讲解JAVA中的IO流
    c++运算符的优先级(收好不谢)
    java程序——输出当月日历表
  • 原文地址:https://www.cnblogs.com/hl666/p/3709698.html
Copyright © 2020-2023  润新知