IOS中NSUserDefaults的使用


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

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

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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Cpp代码 :
//保存数据到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或者删掉沙盒,也就是你的应用程序然后重新安装。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值