數據存儲

一、NSCoding : ?使用NSCoding需要遵守<NSCoding>

保存:

/**

?*? 將某個對象寫入文件時會調用

?*? 在這個方法中說清楚哪些屬性需要存儲

?*/

MJStudent.m

- (void)encodeWithCoder:(NSCoder *)encoder

{

? ? [encoder encodeObject:self.no forKey:@"no"];

? ? [encoder encodeInt:self.age forKey:@"age"];

? ? [encoder encodeDouble:self.height forKey:@"height"];

}

?

存儲:

?// 1.新的模型對象

? ? MJStudent *stu = [[MJStudent alloc] init];

? ? stu.no = @"42343254";

? ? stu.age = 20;

? ? stu.height = 1.55;

?? ?

? ? // 2.歸檔模型對象

? ? // 2.1.獲得Documents的全路徑

? ? NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

? ? // 2.2.獲得文件的全路徑

? ? NSString *path = [doc stringByAppendingPathComponent:@"stu.data"];

? ? // 2.3.將對象歸檔

?

? ? [NSKeyedArchiver archiveRootObject:stu toFile:path];

?

?

?

/**

?*? 從文件中解析對象時會調用

?*? 在這個方法中說清楚哪些屬性需要存儲

?*/

- (id)initWithCoder:(NSCoder *)decoder

{

? ? if (self = [super init]) {

? ? ? ? // 讀取文件的內容

? ? ? ? self.no = [decoder decodeObjectForKey:@"no"];

? ? ? ? self.age = [decoder decodeIntForKey:@"age"];

? ? ? ? self.height = [decoder decodeDoubleForKey:@"height"];

? ? }

? ? return self;

?

}

?

?

讀取:

?

// 1.獲得Documents的全路徑

? ? NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

? ? // 2.獲得文件的全路徑

? ? NSString *path = [doc stringByAppendingPathComponent:@"stu.data"];

?? ?

? ? // 3.從文件中讀取MJStudent對象

? ? MJStudent *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

?? ?

?

? ? NSLog(@"%@ %d %f", stu.no, stu.age, stu.height);

?

二、

偏好設置:(保存與讀取)

保存:

// 1.利用NSUserDefaults,就能直接訪問軟件的偏好設置(Library/Preferences)

? ? NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

?? ?

? ? // 2.存儲數據

? ? [defaults setObject:@"mj" forKey:@"account"];

? ? [defaults setObject:@"123" forKey:@"pwd"];

? ? [defaults setInteger:10 forKey:@"age"];

? ? [defaults setBool:YES forKey:@"auto_login"];

?? ?

? ? // 3.立刻同步

? ? [defaults synchronize];

?

?

讀取:

?

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

?? ?

? ? NSString *account = [defaults objectForKey:@"account"];

? ? BOOL autoLogin = [defaults boolForKey:@"auto_login"];

?

? ? NSLog(@"%@ -- %d", account, autoLogin);

?

三、

Plist存儲:(保存與讀取)

保存:

// 不同的設備根路徑可能不一樣,設備和虛擬機的路徑也不一樣,所以最好使用NSHomeDirectory(),系統會自動返回一個根路徑

// 1.獲得沙盒根路徑

? ? NSString *home = NSHomeDirectory();

?

// 拼接路勁,根路徑有Documents這個文件夾,所以拼接這個文件夾路勁

// 2.拼接document路徑

?

? ? NSString *docPath = [home stringByAppendingPathComponent:@"Documents”];

?

?

// 4.新建數據

NSArray *data = @[@"jack", @10, @"ffdsf”];

// 5.文件路徑

NSString *filepath = [docPath stringByAppendingPathComponent:@"data.plist”];

// 將文件寫入對應的文件路徑保存

[data writeToFile:filepath atomically:YES];

?

?

讀取:

// 1.獲得沙盒根路徑

? ? NSString *home = NSHomeDirectory();

?? ?

? ? // 2.document路徑

? ? NSString *docPath = [home stringByAppendingPathComponent:@"Documents"];

?? ?

? ? // 3.文件路徑

? ? NSString *filepath = [docPath stringByAppendingPathComponent:@"data.plist"];

?? ?

? ? // 4.讀取數據

? ? NSArray *data = [NSArray arrayWithContentsOfFile:filepath];

?

? ? NSLog(@"%@", data);

轉載于:https://www.cnblogs.com/pocket-mood/p/4458796.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257375.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257375.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257375.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

犯人釋放的C語言程序,C語言的自動關機程序和一個用來整人的小程序

可以用C語言中的system()函數來實現系統的自動關機程序&#xff0c;可以設置多長時間后將自動關機。當然馬上關機也是可以的&#xff0c;我們就可以惡搞別人計算機了(你事先得知道怎么解)&#xff0c;將寫好的自動關機程序復制到別人電腦&#xff0c;然后將可執行的文件設為開機…

[mysql] linux下使用yum安裝mysql

From: http://www.2cto.com/database/201207/141878.html linux下使用yum安裝mysql1、安裝查看有沒有安裝過&#xff1a;yum list installed mysql*rpm -qa | grep mysql*查看有沒有安裝包&#xff1a;yum list mysql*安裝mysql客戶端&#xff1a;yum install mysql安裝mysql 服…

圖解MapReduceMapReduce整體流程圖

1.圖解MapReduceMapReduce整體流程圖 并行讀取文本中的內容&#xff0c;然后進行MapReduce操作 Map過程&#xff1a;并行讀取三行&#xff0c;對讀取的單詞進行map操作&#xff0c;每個詞都以<key,value>形式生成 reduce操作是對map的結果進行排序&#xff0c;合并&#…

阿里云推出CloudDBA,解決數據庫性能優化和問題診斷難題

問題診斷(trouble shooting) 和 性能優化(performance tunning) 一直都是數據庫領域的專業問題&#xff0c;需要資深DBA的專業技能才能勝任解決&#xff0c;但這樣的人才是稀缺的&#xff0c;無法及時滿足大部分的企業緊急需求。如果有一款產品能夠在大多數情況下&#xff0c;用…

c語言程序設計學生信息管理系統代碼,c語言程序設計學生成績管理系統源代碼.pdf...

c語言程序設計 學 生 成 績 管 理 系 統 源代碼#include#include#include#include#define MAX 80int a;typedef struct /*定義結構體數組*/{ char num[10];char name[20];int score;} Student;Student stu[MAX];int menu_select(){char c;do{system("cls");/*清屏*/p…

初探ArrayList之刪除

1.返回刪除元素的刪除方法 public E remove(int index) {rangeCheck(index);modCount;//記錄修改次數的變量E oldValue elementData(index);//根據數組下標拿到指定元素int numMoved size - index - 1;//計算移動位數if (numMoved > 0)System.arraycopy(elementData, inde…

UESTC_秋實大哥與花 2015 UESTC Training for Data StructuresProblem B

B - 秋實大哥與花 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Status秋實大哥是一個儒雅之人&#xff0c;晝聽笙歌夜醉眠&#xff0c;若非月下即花前。 所以秋實大哥精心照料了很多花朵。現在所有的花朵排成了一行&#xff…

java的三大特性,封裝,繼承,多態

封裝 Java代碼 /** * 所謂封裝&#xff0c;就是將對象具有的成員變量和成員函數包裝和隱藏起來&#xff0c;讓外界無法直接使用&#xff0c; * 被封裝的成員只能通過某些特定的方式才能訪問。 * 實現封裝有兩個步驟&#xff1a; * 1、將不能暴露的成員隱藏起來&#x…

銀行家算法實驗報告c語言版,銀行家算法實驗報告C語言版.doc

《操作系統》課程綜合性實驗報告姓名&#xff1a; 學號&#xff1a; 2016 年 11 月 20 日實驗題目進程調度算法程序設計一、實驗目的通過對安全性算法和銀行家算法的模擬&#xff0c;進一步理解資源分配的基本概念&#xff0c;加深對資源申請&#xff0c;資源分配(銀行家算法)以…

GetModuleHandle(NULL)獲取當前DLL模塊基址?

做一項目想在DLL內部代碼實現獲取本DLL的模塊基址&#xff0c;而且不知道本DLL名稱 最簡單的方法是想到GetModuleHandle(NULL)&#xff0c;是否可以呢? 參看http://blog.csdn.net/guzhou_diaoke/article/details/8826558到的答案是否 自己嘗試了一下: DLL代碼(testDll): BOOL …

DataTable是否存在某個列的判斷

使用 DataTable.Columns.Contains方法可以判斷某個列名是否存在于某個DataTable中 //添加模擬數據 DataTable t new DataTable(); DataColumn col new DataColumn("aaa"); t.Columns.Add(col); col new DataColumn("bbb"); t.Columns.Add(col); col ne…

【評分】第三次作業-團隊展示

【評分】第三次作業-團隊展示 總結 【2017-10-10】更新&#xff1a; 分數映射至 [1,2] 分 【注意】&#xff1a; 為了保護大家隱私&#xff0c;以后發表博客&#xff1a; 涉及到學號時&#xff0c;僅提供后三位涉及到姓名時&#xff0c;僅提供名&#xff08;省略姓&#xff09;…

c語言變量為什么要定義,C語言為什么要規定對所用到的變量要“先定義,后使用”...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓int a10;以上一句話對變量a進行了聲明&#xff0c;定義以及初始化extern int a;以上一句話僅僅對變量a進行了聲明&#xff0c;將a的鏈接屬性設置為externalint *p;以上定義了一個指針int a10;int *p;p&a;以上為指針變量進行了賦…

iOS 開發--github的demo

令人驚訝的是&#xff0c;YYText 雖然代碼量很大&#xff08;超過一萬行&#xff09;&#xff0c;但它只是 ibireme 的作品之一。ibireme 利用業余時間完成了 YYKit 工具庫&#xff0c;包括&#xff1a; YYModel — 高性能的 iOS JSON 模型框架。 YYCache — 高性能的 iOS 緩存…

RabbitMQ快速安裝配置指南

RabbitMQ快速安裝配置指南 官網的安裝教程由于需要解釋原理很多廢話&#xff0c;這里總結一下在CentOS7環境下的安裝配置過程。如需理解原理&#xff0c;請看官網原文的安裝指南或翻譯1. 安裝RabbitMQ server ## 安裝epel源 yum install -y epel-release## 安裝Erlang yum inst…

[轉]基于Starling移動項目開發準備工作

最近自己趁業余時間做的flash小游戲已經開發得差不多了&#xff0c;準備再完善下ui及數值后&#xff0c;投放到國外flash游戲站。期間也萌生想法&#xff0c;想把游戲拓展到手機平臺。這兩天嘗試了下&#xff0c;除去要接入ane接口的工作&#xff0c;小游戲本身不用做任何改動就…

c語言float輸出分數,c語言同一題目求解結果用float和int輸出值差1.

c語言同一題目求解結果用float和int輸出值差1.答案:3 信息版本&#xff1a;手機版解決時間 2018-12-08 22:35已解決2018-12-08 05:38c語言同一題目求解結果用float和int輸出值差1.最佳答案2018-12-08 06:01試試這樣就好了#include main(){long i;float j,j1,j2,j4,j6,j10;j110…

《構建之法》閱讀筆記02

今天我閱讀了《構建之法》4-6章。有許多的感悟。 以前編程序總喜歡亂命名變量&#xff0c;覺得自己看的懂就行了。但讀完構建之法第四章。我知道了程序是給別人看的&#xff0c;然后那只是程序比較簡單而已。如果一個程序過于龐大&#xff0c;而變量的命名有沒有實際的意義&…

2017-10-03 前端日報

2017-10-03 前端日報 精選 你需要知道的幾類npm依賴包管理看Zepto如何實現增刪改查DOM把cookie聊清楚6 Pro Tips from React DevelopersMulti-user experiences with A-Frameclintonwoo/hackernews-react-graphql: Hacker News clone rewritten with universal JavaScript, usi…

【樸靈評注】JavaScript 運行機制詳解:再談Event Loop

PS: 我先旁觀下大師們的討論&#xff0c;得多看書了~別人說的&#xff1a;“看了一下不覺得評注對到哪里去&#xff0c;只有吹毛求疵之感。 比如同步異步介紹&#xff0c;本來就無大錯&#xff1b;比如node圖里面的OS operation&#xff0c;推敲一下就可以猜到那是指同步操作&a…