NSdata的概念
一、使用文件時須要頻繁地將數據讀入一個臨時存儲區,它一般稱爲緩衝區
二、NSdata類提供了一種簡單的方式,它用來設置緩衝區,將文件的內容讀入緩衝區,或者將緩衝區內容寫到一個文件。
三、對於32位應用程序,NSdata緩存最多2GB
四、咱們有兩種定義 NSData(不可變緩衝區),NSMutableData(可變緩衝區)html
上面的描述有點片面,再補充一些:
緩存
NSData就是字節流的數據,它爲字節流提供面向對象的存儲空間,可以把一些字符串或圖片等等一些很是複雜的數據類型轉換成01字節流。在Objective-c中幾乎全部的對象類型均可以轉換成NSData(字符串也屬於對象類型),基本數據類型須要先封裝成對象,再轉換成NSData。服務器
在iOS中將對象序列化時,就須要將對象轉換成爲字節流數據即NSData類型的數據。網絡
在要求將數據進行網絡傳輸的場合,也須要將數據轉化成爲字節流才能進行傳輸。不管是向服務器寫數據、仍是從服務器返回的數據都應該是NSData類型的。post
在Objective-c中要將對象轉換成爲NSData類型時,對象的類必須遵照NSCoding協議。NSCoding協議規定了兩個必須實現的方法:initWithCoder:和encodeWithCoder:。initWithCoder:方法使用給定的狀態初始化一個新對象,也稱爲反序列化,或者解碼。encodeWithCoder:方法接收一個帶狀態的對象,並對其進行序列化,或者稱爲編碼。您能夠把encodeWithCoder:方法理解成將對象打包準備傳輸,把initWithCoder:方法理解成將接收到的數據解包成可用的對象。編碼
許多經常使用的類,例如NSString、NSArray、NSNumber以及許多其餘的類,已經實現了NSCoding協議。對於自定義的類,就須要用戶本身實現NSCoding協議的initWithCoder:方法和encodeWithCoder:方法。這並非很麻煩的事,能夠在這裏看到一個實現NSCoding協議的例子:(譯)如何使用NSCoding和NSFileManager來保存你的應用程序數據code
參考:htm
(譯)如何使用NSCoding和NSFileManager來保存你的應用程序數據blog
NSString,NSData,char的轉換
1. NSString轉化NSData
NSData* aData = [@"a nsstring" dataUsingEncoding: NSUTF8StringEncoding];
2.NSData轉化NSString
NSString* aString = [[NSString alloc] initWithData:aData encoding:NSUTF8StringEncoding];
3.NSString轉化char
char cstr[10]; cstr =[aString UTF8String];
4.NSData轉化char
char* cstr=[aData bytes];
5.char轉化NSString
- (id)initWithUTF8String:(const char *)bytes NSString *bString = [[NSString alloc] initWithUTF8String:cstr];
6.char轉化NSData
NSData *data = [NSData dataWithBytes:cstr length:strlen(cstr)];