ios有一套完整的資料安全體系,ios應用程式只能訪問自己的目錄,這個目錄稱為沙箱目錄,而應用程式間
禁止資料的共享和訪問。
下面的目錄是ios平台的沙箱目錄,我們可以在模擬器下面看到,在真實裝置上也是這樣儲存的:
其中a262b02a-1975-4a7a-ab8c-c181e2cc059a是應用程式id,在安裝時由系統分配。documents、library和tmp
都是沙箱目錄的子目錄,其目錄結構如下所示:
├── documents
│ └── noteslist.sqlite3
├── library
│ ├── caches
│ └── preferences
├── tmp
1. documents目錄
該目錄用於儲存非常大的檔案或需要非常頻繁更新的資料,能夠進行itunes或icloud的備份。獲取目錄位置的
**如下所示:
nsarray * documentdirectory = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);
//其中documentdirectory是只有乙個元素的陣列,因此還需要使用下面的**取出乙個路徑來:
nsstring * mydocpath = [documentdirectory objectatindex:0];
//或nsstring * mydocpath = [documentdirectory lastobject];
2. library目錄
在library目錄下面有preferences和caches目錄,其中前者用於存放應用程式的設定資料,後者與documents很相似,可以存放應用程式的資料,用來儲存快取檔案。
3. tmp目錄
這是臨時檔案目錄,使用者可以訪問它。它不能夠進行itunes或icloud的備份。要獲取目錄的位置,可以使用如下**:
nsstring *tmpdirectory = nstemporarydirectory();
【持久化方式】
持久化方式就是資料訪問方式。ios支援本地儲存和雲儲存,這裡主要介紹本地儲存,主要涉及如下4種機制。
1.屬性列表。集合物件可以讀寫到屬性列表檔案中。
2. 物件歸檔。物件狀態可以儲存到歸檔檔案中。
3. sqlite資料庫。sqlite是乙個開源嵌入式關係型資料庫。
4. core data。它是一種物件關係對映技術(orm),本質上也是通過sqlite儲存的。
採用什麼技術,要看具體實際情況而定。屬性列表檔案和物件歸檔一般用於儲存少量資料。屬性列表檔案的
訪問要比物件歸檔的訪問簡單,foundation框架集合物件都有對應的方法讀寫屬性列表檔案,而物件歸檔是借助
nsdata實現的,使用起來比較麻煩。sqlite資料庫和core data一般用於有幾個簡單表關係的大量資料的情況。如
果是複雜表關係而且資料量很大,應該考慮把資料放在遠端雲伺服器中。
IOS之資料持久化 簡單物件寫入檔案
寫入和讀取 寫入 ibaction wirtebt id sender 檔案拼接 寫入 dic writetofile firlpath atomically yes pragma mark data寫入本地 data nsdata data str1 datausingencoding nsutf...
iOS簡單的資料持久化
首先,我們要了解 什麼是資料持久化?我們為什麼要做資料持久化?ios中常用的資料持久化方法有四種 屬性列表,物件歸檔,sqlite,coredata.當程式執行後,資料是儲存在記憶體中的,當程式關閉後,記憶體會釋放掉,從而這些資料也會丟失.因為這些資料都是臨時的.打個比方 臨時資料相當於是公司的車,...
重讀iOS 資料持久化1 持久化方案介紹
內存在斷點後就會清空重置,為了保持資料在斷點後保持,比如手機重啟,就需要把資料存放在硬碟裡,做持久化的儲存。為什麼不一直使用硬碟儲存,因為記憶體會比硬碟更快速。所以在程式的宣告週期裡,資料載入在記憶體裡,進行快速的計算,然後把需要持久儲存的資料儲存到硬碟裡。資料持久化就是怎麼把資料儲存到硬碟裡的技術...