NSUserDefaults是iOS系統提供的一個單例類(iOS提供了若干個單例類),通過類方法standardUserDefaults可以獲取NSUserDefaults單例。
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSUserDefaults單例以key-value的形式存儲了一系列偏好設置,key是名稱,value是相應的數據。存/取數據時可以使用方法objectForKey:和setObject:forKey:來把對象存儲到相應的plist文件中,或者讀取,既然是plist文件,那么對象的類型則必須是plist文件可以存儲的類型,正如官方文檔中提到的——
NSData
NSString
NSNumber(Integer、Float、Double)
NSDate
NSArray
NSDictionary
保存:
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];
//方法synchronise是為了強制存儲,其實并非必要,因為這個方法會在系統中默認調用,但是你確認需要馬上就存儲,這樣做是可行的。
[defaults synchronize];
移除:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults removeObjectForKey:@"uid"];