OC資料儲存本地(一)-----iOS----NSUserDefaults 儲存 清空
具體來說NSUserDefaults
是iOS系統提供的一個單例類(iOS提供了若干個單例類),通過類方法standardUserDefaults
可以獲取NSUserDefaults
單例
常見到的輕量級的儲存,NSUserDefaults
單例以key-value
的形式儲存了一系列偏好設定,key
是名稱,value
是相應的資料。存/取資料時可以使用方法objectForKey:
和setObject:forKey:
來把物件儲存到相應的plist
檔案中,或者讀取,既然是plist
檔案,那麼物件的型別則必須是plist
檔案可以儲存的型別,正如官方文件中提到的——
NSData
NSString
NSNumber
NSDate
NSArray
NSDictionary
比比方說登入時候的返回值,要儲存這些資料,以便於各個模組的時候運用
NSUserDefaults *loginData = [NSUserDefaultsstandardUserDefaults];
[loginDatasetObject:mode.IDforKey:@"loginID"];
[loginDatasetObject:mode.iconUrlforKey:@"loginIcon"];
[loginDatasetObject:mode.account
[loginDatasetObject:mode.usernameforKey:@"loginName"];
而讀取的時候直接拿出來就行了,
NSUserDefaults *loginData = [NSUserDefaultsstandardUserDefaults];
cell.detailTextLabel.text = [loginDataobjectForKey:@"loginName"];
非常方便
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *firstName = [defaults objectForKey:@"firstName"]
NSInteger age = [defaults integerForKey:@"Age"];
NSData *imageData = [defaults dataForKey:@"image"];
UIImage *image = [UIImage imageWithData:imageData];
我們通過為三個資料設定key
的方式把NSInteger
、NSString
和UIImage
三種資料儲存下來,其中圖片是通過歸檔為NSData
的方式進行儲存的,除此之外,還可以被轉為NSNumber
或NSString
型別。順便提一句,這裡NSInteger
沒有星號,因為NSInteger
根據系統是64位還是32位來判斷自身是long
還是int
型別,並且它也不是一個標準Objective-C物件。NSUserDefaults的清理
//方法一
// 先將其轉化為字典,然後用forin遍歷刪除即可
NSUserDefaults *defatluts = [NSUserDefaultsstandardUserDefaults];
NSDictionary *dictionary = [defatluts dictionaryRepresentation];
for(NSString *key in [dictionary allKeys]){
[defatluts removeObjectForKey:key];
[defatluts synchronize];
}
//方法二
[[NSUserDefaults standardUserDefaults] removeObjectForKey:key];
[[NSUserDefaults standardUserDefaults]synchronize];