NSUserDefaults資料儲存總結

2021-07-25 05:15:50 字數 1665 閱讀 8727

1.nsuserdefaults是乙個單例類,可以用於資料的永久儲存, 一般用於儲存應用程式設定以及使用者資料等輕量級資料, 而且簡單實用。

3.nsuserdefaults是單例,同時也是執行緒安全的

4.nsuserdefaults儲存的物件全是不可變的:nsdictionary, nsarray, nsstring, nsnumber, nsdate, nsdata. 

這一點非常關鍵,儲存物件不對的話會導致程式崩潰.

5.存入資料時, 不會立即同步到記憶體中, 但可以通過呼叫synchronize方法來使記憶體中的快取與使用者預設系統進行同步。 

[[nsuserdefaults standarduserdefaults]synchronize]

7.通過removeobjectforkey:方法可以進行資料的移除.

若需要將自定義物件通過nsuserdefaults儲存時, 不可以直接儲存, 也不可以將自定義物件放入字典或者陣列中在新增. 但可以通過將自定義物件轉化為 nsdata 型別, 再進行儲存.

1.將自定義型別轉換為nsdata型別

自定義型別物件要歸檔就需要遵守< nscodeing > 協議, 然後在 .m中實現恩codewithcode: 和initwithcoder: 兩個方法.

自定義類**:

#import 

@inte***ce

person : nsobject

@property (nonatomic, copy)nsstring *name;

@property (nonatomic, assign)nsinteger age;

@end

#import "person.h"

@implementation

person

-(void)encodewithcoder:(nscoder *)acoder

-(instancetype)initwithcoder:(nscoder *)adecoder

return

self;

}@end

2.將 nsdata存入 nsuserdefaults中

//自定義型別

person *per = [[person alloc]init];

per.name = @"zhangsan";

per.age = 42;

//轉化為 data

nsdata *data = [nskeyedarchiver archiveddatawithrootobject:per];

//存入

[[nsuserdefaults standarduserdefaults]setobject:@ forkey:@"person"];

[[nsuserdefaults standarduserdefaults]synchronize];

//取出列印

person *a = [nskeyedunarchiver unarchiveobjectwithdata:[[[nsuserdefaults standarduserdefaults] objectforkey:@"person"] valueforkey:@"zhangsan"]];

nslog(@"%@,%ld",a.name,a.age);

NSUserDefaults儲存顏色

inte ce nsuserdefaults color void setcolor nscolor thecolor forkey nsstring key nscolor colorforkey nsstring key end implementation nsuserdefaults col...

NSUserDefaults儲存資料

1.用處 nsuserdefaults用來儲存類似使用者的配置 程式設定資訊等這些的資料 ios下可以使用nsuserdefault nskeyedarchiver sqlite coredata幾種常用的方式來儲存資料,其中nsuserdefaults用來儲存類似使用者的配置等這些的資料,後兩者使...

NSUserDefaults 用來儲存使用者設定資訊

nsuserdefaults 可以用來儲存使用者設定資訊,下次啟動程式的時候可以直接讀取,比儲存在檔案和資料庫中要方便很多。nsstring const int hall filter speed inthallfilterspeed nsstring const int hall filter s...