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