zoukankan      html  css  js  c++  java
  • IOS中NSUserDefaults的用法

    NSUserDefaults适合存储轻量级本地数据,比如要保存用户登陆的用户名、密码,使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息。

    NSUserDefaults支持的数据格式有:NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL类型。

    NSUserDefaults,读取方便,容易。下面给出一个示例看看如何使用:

    //保存数据到NSUserDefaults     
    -(void)saveNSUserDefaults    
    {    
        NSString *myString = @"enuola";    
        int myInteger = 100;    
        float myFloat = 50.0f;    
        double myDouble = 20.0;    
        NSDate *myDate = [NSDate date];    
        NSArray *myArray = [NSArray arrayWithObjects:@"hello", @"world", 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:@"myString"];    
        [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:@"myString"];    
        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;    
    }    

     用NSUserDefaults存储的数据下次程序运行的时候依然存在,其数据存储在应用程序内置的一个plist文件里,这个可以根据路径看到。比如说这个是你的程序沙盒位置
    /UsersLibrary/Application Support/iPhoneSimulator/4.1/Applicati*****/29788E40-AF47-45A0-8E92-3AC0F501B7F4/,(这个是应用程序对应在mac上的位置)
    这个下面有/Library/Prefereces,里面有个plist文件,存储的就是你的userDefaults,想要删掉的话,用removeObjectForKey或者删掉沙盒,也就是你的应用程序然后重新安装。

  • 相关阅读:
    使用 Spring data redis 结合 Spring cache 缓存数据配置
    Spring Web Flow 笔记
    Linux 定时实行一次任务命令
    css js 优化工具
    arch Failed to load module "intel"
    go 冒泡排序
    go (break goto continue)
    VirtualBox,Kernel driver not installed (rc=-1908)
    go运算符
    go iota
  • 原文地址:https://www.cnblogs.com/zuopeng/p/4267359.html
Copyright © 2011-2022 走看看