您的位置:首页 > 移动开发 > IOS开发

IOS中NSUserDefaults的用法(轻量级本地数据存储)

2014-07-13 18:20 555 查看
NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的,个人觉得使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯。
因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就可以了。
NSUserDefaults支持的数据格式有:NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL类型。很实用吧
NSUserDefaults很方便,读取也很容易。下面给出一个示例看看如何使用:(PS:更详细的也可以参考官方文档哈)
ViewController.h文件中主要是放几个控件,用于显示存储的数据:

[self saveNSUserDefaults]; //调用此方法将各种数据存储到NSUserDefautls中,在下面定义
[self readNSUserDefaults]; //调用此方法从NSUserDefautls中读取各种数据,在下面定义

//保存数据到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 = [NSStringstringWithFormat:@"%d",myInteger];

//读取浮点型float类型的数据
float myFloat = [userDefaultes
floatForKey:@"myFloat"];
txtFloat.text = [NSString stringWithFormat:@"%f",myFloat];

//读取double类型的数据
double myDouble = [userDefaultes
doubleForKey:@"myDouble"];
txtDouble.text = [NSStringstringWithFormat:@"%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-ddHH:mm:ss"];
txtNSDate.text = [NSStringstringWithFormat:@"%@",[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];
// [myArrayStringstringByAppendingFormat:@"%@",str];
NSLog(@"myArrayString=%@",myArrayString);
}
txtNSArray.text = myArrayString;

//读取字典类型NSDictionary类型的数据
NSDictionary *myDictionary =[userDefaultes
dictionaryForKey:@"myDictionary"];
NSString *myDicString = [NSString
stringWithFormat:@"name:%@,age:%d",[myDictionaryvalueForKey:@"name"], [[myDictionary
valueForKey:@"age"]
integerValue]];
txtNSDictionary.text = myDicString;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: