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或者删掉沙盒,也就是你的应用程序然后重新安装。

  • 相关阅读:
    poj 3068 Bridge Across Islands
    XidianOJ 1086 Flappy v8
    XidianOJ 1036 分配宝藏
    XidianOJ 1090 爬树的V8
    XidianOJ 1088 AK后的V8
    XidianOJ 1062 Black King Bar
    XidianOJ 1091 看Dota视频的V8
    XidianOJ 1098 突击数论前的xry111
    XidianOJ 1019 自然数的秘密
    XidianOJ 1109 Too Naive
  • 原文地址:https://www.cnblogs.com/zuopeng/p/4267359.html
Copyright © 2011-2022 走看看