[转帖]IOS中NSUserDefaults的用法_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3687 | 回复: 0   主题: [转帖]IOS中NSUserDefaults的用法        下一篇 
baijiang.lu
注册用户
等级:少校
经验:947
发帖:81
精华:0
注册:2013-9-2
状态:离线
发送短消息息给baijiang.lu 加好友    发送短消息息给baijiang.lu 发消息
发表于: IP:您无权察看 2013-9-10 16:05:20 | [全部帖] [楼主帖] 楼主

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




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论