iOS NSUserDefaults 简介 NSUserDefaults 存储自定义对象
摘要?NSUserDefaults適合存儲輕量級的本地數(shù)據(jù),一些簡單的數(shù)據(jù)(NSString類型的)例如密碼,網(wǎng)址等,NSUserDefaults肯定是首選,但是如果我們自定義了一個對象,對象保存的是一些信息,這時候就不能直接存儲到NSUserDefaults了
一、了解NSUserDefaults以及它可以直接存儲的類型?二、使用 NSUserDefaults 存儲自定義對象?1、將自定義類型轉(zhuǎn)換為NSData類型?2、將自定義類型數(shù)據(jù)存入?NSUserDefaults?中?3、使用MJExtension一句話搞定對象歸檔?
一、了解NSUserDefaults以及它可以直接存儲的類型
?
? ? ? NSUserDefaults是一個單例,在整個程序中只有一個實例對象,他可以用于數(shù)據(jù)的永久保存,而且簡單實用,這是它可以讓數(shù)據(jù)自由傳遞的一個前提,也是大家喜歡用它保存簡單數(shù)據(jù)的一個主要原因。? ? ?
? ? ? 使用 NSUserDefaults 存儲自定義對象的最初,我們必須認識NSUserDefaults可以存儲哪一些類型的數(shù)據(jù),下面一一列出:
NSUserDefaults支持的數(shù)據(jù)類型有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL.
?
?如果想要將上述數(shù)據(jù)類型的數(shù)據(jù)永久保存到NSUserDefaults中去,只需要簡單的操作(一個Value 一個Key ),例如,想要保存一個NSString的對象,代碼實現(xiàn)為:
?
[objc]?view plaincopy
??將數(shù)據(jù)取出也很簡單,只需要取出key 對應(yīng)的值就好了,代碼如下:
?
[objc]?view plaincopy
注意:對相同的Key賦值約等于一次覆蓋,要保證每一個Key的唯一性
值得注意的是:
? ? ? ? NSUserDefaults 存儲的對象全是不可變的(這一點非常關(guān)鍵,弄錯的話程序會出bug),例如,如果我想要存儲一個?NSMutableArray 對象,我必須先創(chuàng)建一個不可變數(shù)組(NSArray)再將它存入NSUserDefaults中去,代碼如下:
?
[objc]?view plaincopy?
?
取出數(shù)據(jù)是一樣的,想要用NSUserDefaults中的數(shù)據(jù)給可變數(shù)組賦值
先給出一個錯誤的寫法:
[objc]?view plaincopy
正確的寫法:
取出數(shù)據(jù)是一樣的,想要用NSUserDefaults中的數(shù)據(jù)給可變數(shù)組賦值
先給出一個錯誤的寫法:
[objc]?view plaincopy
正確的寫法:
二、使用 NSUserDefaults 存儲自定義對象
1、將自定義類型轉(zhuǎn)換為NSData類型
?
? ? ? 當數(shù)據(jù)重復(fù)而且多的時候(例如想存儲全班同學(xué)的學(xué)號,姓名,性別(這個數(shù)據(jù)量可能太大了 )),如果不用SQLite?存儲 (多數(shù)據(jù)最好還是用這個),你可以選擇使用歸檔,再將文件寫入本地,但是這種方式和?NSUserDefaults?比起來麻煩多了(因為NSFileManage 本來就挺復(fù)雜) ,但是問題是,NSUserDefaults?本身不支持自定義對象的存儲,不過它支持NSData的類型,下面舉一個例子來介紹。
轉(zhuǎn)載于:https://www.cnblogs.com/HHD-9199/p/8572491.html
總結(jié)
以上是生活随笔為你收集整理的iOS NSUserDefaults 简介 NSUserDefaults 存储自定义对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stm32的dma缓冲区长度,,存放数据
- 下一篇: 二级联动