1. 程式人生 > >OC資料儲存本地(一)-----iOS----NSUserDefaults 儲存 清空

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

forKey:@"loginAccount"];

            [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的方式把NSIntegerNSStringUIImage三種資料儲存下來,其中圖片是通過歸檔為NSData的方式進行儲存的,除此之外,還可以被轉為NSNumberNSString型別。順便提一句,這裡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];