詳解Objective-C檔案載入與儲存

來源:互聯網
上載者:User

Objective-C檔案載入與儲存是本文要介紹的內容,Cocoa提供了Core Data,能夠在幕後處理所有檔案內容,但是本章討論的是Cocoa提供的兩個通用的檔案處理類:屬性列表和對象編碼。

屬性列表

有一類名為屬性列表的對象,常簡寫為plist

屬性列表類包括:NSArray, NSDictionary, NSString, NSNumber, NSDate,NSData以及他們的變體

NSDate

NSDate是用於處理時間和日期的基礎類

[NSDate date]獲得當前日期

dateWithTimeIntervalSinceNow,接受一個NSTimeInterval參數,通過制定時間位移量獲得新時間。正值表示將來,負值表示過去

NSData

NSData封裝了大量位元組,可以獲得資料的長度和指向位元組起始位置的指標

用dataWithBytes:length:方法獲得

length方法給出位元組數

bytes方法給出指向位元組起始位置的指標

NSData不能改變,建立後就只能使用而不能改變,NSMutableData可以改變

寫入和讀取屬性列表

如何使用屬性列表和檔案關聯呢:

集合屬性列表類具有:writeToFile:atomically:方法,用於將屬性列表寫入檔案

NSString、NSData也具有:writeToFile:atomically:方法,但唯寫入字串或資料區塊

注意:atomically參數是BOOL型,用於說明儲存過程中是否使用臨時檔案,會佔用雙倍空間,但除非檔案非常大,否則應該使用YES,以防破壞原始檔案

通過arrayWithContentsofFile:方法可以將檔案內容讀入到數組中

writeToFile:atomically:的缺點是,不會返回錯誤資訊,如果不能載入,只能從方法中得到nil指標

編碼對象

Cocoa具備一種機制,將對象轉換為某種格式儲存到磁碟中,當讀取這些資料區塊到記憶體後,還能基於儲存的對象建立新的對象。這個過程稱為編碼和解碼,或稱為序列化和還原序列化

例如:使用Interface Buider時,從庫中拖動對象,這些對象被儲存到nib檔案中,換言之,對象被序列化並儲存到磁碟中。程式運行時,會將nib檔案載入到記憶體中,序列化對象

通過實現NSCoding協議,可以使自己的對象實現相同的功能

 
  1. @protocal NSCoding  
  2. -(void) encodeWithCoder:(NSCoder *) aCoder;  
  3. -(id) initWithCoder:(NSCoder *) aDecoder; 

NSCoder是一個抽象類別,我們只用它的子類NSKeyedArchiver和NSKeyedUnarchiver

 
  1. encodeObject:forkey方法編碼,encodeXXX:forkey:  
  2. decodeObject:forkey方法解碼,decodeXXX:forkey; 

注意:initWithCoder需要調用父類init,如果父類採用NSCoding協議,則調用initWithCoder,否則調用init即可。

小結:詳解Objective-C檔案載入與儲存的內容介紹完了,希望通過本文的學習對你有所協助!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.