iOS 數(shù)據(jù)存儲

沙盒機制就是指ios應(yīng)用程序只能在為該程序創(chuàng)建的文件系統(tǒng)中讀取文件方咆,不可以去其它地方訪問,所有的非代碼文件都要保存在此蟀架,圖像瓣赂,圖標,聲音片拍,映像煌集,屬性列表,文本文件等捌省。(ios8之前是如此,iOS8新開放了一種對幾個固定系統(tǒng)區(qū)域的擴展機制extension,可以在一定程度上彌補iOS的沙盒機制對應(yīng)用間通信的限制).每個應(yīng)用程序都有自己的存儲空間 ;不能翻過自己的圍墻去訪問別的存儲空間;應(yīng)用程序請求的數(shù)據(jù)都要通過權(quán)限檢測苫纤,假如不符合條件的話,不會被放行

  1. plist儲存

儲存位置 Documents -> data.plist
存數(shù)據(jù):

- (IBAction)save:(id)sender {
     /**
     * 
      獲取沙盒的根路徑
      NSString *home = NSHomeDirectory();
      拼接Documents路徑
      NSString *docPath = [home stringByAppendingString:@"/Documents"];
      NSString *docPath = [home stringByAppendingPathComponent:@"Documents"];
      NSDocumentDirectory : 查找Documents文件夾
      NSUserDomainMask : 在用戶的應(yīng)用程序下查找
      YES 把路徑展開 NO 當前應(yīng)用的根路徑 == ~
      NO  ~/Documents
     */
    NSString *docPath =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    NSLog(@"%@",docPath);
    // 拼接文件路徑
    NSString *filePath = [docPath stringByAppendingPathComponent:@"data.plist"];
    // 只有具備writeToFile:的對象才能使用plist存儲纲缓,NSArray
    NSArray *array = @[@1,@2,@"123"];
    [array writeToFile:filePath atomically:YES];
}

讀數(shù)據(jù):

- (IBAction)read:(id)sender {
    NSString *docPath =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    NSLog(@"%@",docPath);
    // 拼接文件路徑
    NSString *filePath = [docPath stringByAppendingPathComponent:@"data.plist"];
    NSArray *data = [NSArray arrayWithContentsOfFile:filePath];
    NSLog(@"%@",data);
}

2.NSKeyedArchiver
存儲位置 Library ->Caches ->data
(1)歸檔卷拘,解檔一個對象

- (IBAction)save:(id)sender {
    HMPerson *person = [HMPerson new];
    person.age = 18;
    
    NSString *docPath =  NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
    
    // 拼接文件路徑
    NSString *filePath = [docPath stringByAppendingPathComponent:@"person.data"];
    
    [NSKeyedArchiver archiveRootObject:person toFile:filePath];
}
- (IBAction)read:(id)sender {
    NSString *docPath =  NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
    
    // 拼接文件路徑
    NSString *filePath = [docPath stringByAppendingPathComponent:@"person.data"];
    
    HMPerson *p = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
    NSLog(@"%d",p.age);
}
#import <Foundation/Foundation.h>

@interface HMPerson : NSObject<NSCoding>

@property (nonatomic, assign) int age;

@end
#import "HMPerson.h"

@implementation HMPerson

// 在對象歸檔的時候調(diào)用
// 哪些屬性需要歸檔
// 這些屬性怎么歸檔
- (void)encodeWithCoder:(NSCoder *)aCoder
{
    [aCoder encodeInt:_age forKey:@"age"];
}

// 在對象解檔的時候調(diào)用
// 哪些屬性需要解檔
// 這些屬性怎么解檔

- (id)initWithCoder:(NSCoder *)aDecoder
{
    // 當父類實現(xiàn)了NSCoding,就能調(diào)用 [super initWithCoder]
    if (self = [super init]) {
        _age = [aDecoder decodeIntForKey:@"age"];
    }
    return self;
}
  1. NSUserDefault
    儲存位置 Library ->Preferences
- (IBAction)save:(id)sender {
    
    // [NSUserDefaults standardUserDefaults]可以直接操作偏好設(shè)置文件夾
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    // 自動幫我們生成一個plist文件存放在偏好設(shè)置的文件夾
    [defaults setObject:@"hm" forKey:@"account"];
    // 同步:把內(nèi)存中的數(shù)據(jù)和沙盒同步
    [defaults synchronize];
}
- (IBAction)read:(id)sender {
    // [NSUserDefaults standardUserDefaults]可以直接操作偏好設(shè)置文件夾
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   NSLog(@"%@",[defaults objectForKey:@"account"]);
    
//    NSDictionary *dict = @{@"account":@"hm"};
//    
//    dict writeToFile:<#(NSString *)#> atomically:<#(BOOL)#>   
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祝高,一起剝皮案震驚了整個濱河市栗弟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌工闺,老刑警劉巖乍赫,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異陆蟆,居然都是意外死亡雷厂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門叠殷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來改鲫,“玉大人,你說我怎么就攤上這事溪猿」辰埽” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵诊县,是天一觀的道長讲弄。 經(jīng)常有香客問我,道長依痊,這世上最難降的妖魔是什么避除? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任怎披,我火速辦了婚禮,結(jié)果婚禮上瓶摆,老公的妹妹穿的比我還像新娘凉逛。我一直安慰自己,他們只是感情好群井,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布状飞。 她就那樣靜靜地躺著,像睡著了一般书斜。 火紅的嫁衣襯著肌膚如雪诬辈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天荐吉,我揣著相機與錄音焙糟,去河邊找鬼。 笑死样屠,一個胖子當著我的面吹牛穿撮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播痪欲,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼悦穿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了业踢?” 一聲冷哼從身側(cè)響起咧党,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陨亡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體深员,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡负蠕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了倦畅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遮糖。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖叠赐,靈堂內(nèi)的尸體忽然破棺而出欲账,到底是詐尸還是另有隱情,我是刑警寧澤芭概,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布赛不,位于F島的核電站,受9級特大地震影響罢洲,放射性物質(zhì)發(fā)生泄漏踢故。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望殿较。 院中可真熱鬧耸峭,春花似錦、人聲如沸淋纲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洽瞬。三九已至本涕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間片任,已是汗流浹背偏友。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留对供,地道東北人位他。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像产场,于是被迫代替她去往敵國和親鹅髓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容