NSData與NSString

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

10.4 NSData和NSCoding對象

(譯)如何使用NSCoding和NSFileManager來保存你的應用程序數據blog

iOS 保存和讀取數據的方法





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)];
相關文章
相關標籤/搜索