iOS開發筆記-swift實現iOS資料持久化之歸檔NSKeyedArchiver

來源:互聯網
上載者:User

標籤:

IOS資料持久化的方式分為三種:

  1. 屬性列表 (plist、NSUserDefaults)
  2. 歸檔 (NSKeyedArchiver)
  3. 資料庫 (SQLite、Core Data、第三方類庫等

歸檔(又名序列化),把對象轉為位元組碼,以檔案的形式儲存到磁碟上;程式運行過程中或者當再次重寫開啟程式的時候,可以通過解歸檔(還原序列化)還原這些對象。本文主要介紹swift實現iOS資料歸檔。

 

歸檔Foundation架構對象

 

func archiveData(){        var path: AnyObject=NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0]        var filePath=path.stringByAppendingPathComponent("data.archive")        //歸檔        var array=["Bill Gates","Steve Jobs"]        if(NSKeyedArchiver.archiveRootObject(array, toFile: filePath)){            NSLog("Archive Success")        }    }    func unarchiveData(){        var path: AnyObject=NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0]        var filePath=path.stringByAppendingPathComponent("data.archive")        //反歸檔        var data=NSKeyedUnarchiver.unarchiveObjectWithFile(filePath) as NSArray        NSLog("%@", data)    }

小結:

  1. 歸檔和解歸檔操作步驟簡單
  2. 一次只能歸檔一個對象,如果是多個對象歸檔需要分開進行
  3. 歸檔的對象是Foundation架構中的對象
  4. 歸檔和解歸檔其中任意對象都需要歸檔和解歸檔整個檔案
  5. 歸檔後的檔案是加密的,所以歸檔檔案的副檔名可以隨意取
  歸檔自訂資料 
        var path=NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as NSString        var filePath=path.stringByAppendingPathComponent("data.archive")        //歸檔        var data=NSMutableData()        var archiver=NSKeyedArchiver(forWritingWithMutableData: data)        archiver.encodeObject(["Bill Gates","Steve Jobs"], forKey: "data");        archiver.encodeInt(32, forKey: "age");        archiver.encodeObject("test message", forKey: "tip");        archiver.finishEncoding()        data.writeToFile(filePath, atomically: true)         //反歸檔        var unarchiveData=NSData(contentsOfFile: filePath)        var unarchiver=NSKeyedUnarchiver(forReadingWithData: unarchiveData!)        var decodeData=unarchiver.decodeObjectForKey("data") as NSArray        var decodeAge=unarchiver.decodeIntForKey("age")        var decodeTip=unarchiver.decodeObjectForKey("tip") as NSString        NSLog("data=%@,age=%i,tip=%@",decodeData,decodeAge,decodeTip)

 

小結:

  1. 在帶鍵的歸檔中,每個歸檔欄位都有一個key值,解歸檔時key值要與歸檔時key值匹配
  2. 帶鍵歸檔可以一次儲存多個對象
  3. 歸檔的對象是Foundation架構中的對象
  4. 歸檔和解歸檔其中任意對象都需要歸檔和解歸檔整個檔案
  5. 歸檔後的檔案是加密的,所以歸檔檔案的副檔名可以隨意取
  

iOS開發筆記-swift實現iOS資料持久化之歸檔NSKeyedArchiver

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.