2012-01-30 21 views
0

我正在嘗試膨脹iOS 5.0上的gzipped字節緩衝區。 我正在使用在CocoaDev找到的NSData類別。 但是,每次我在NSData對象上調用gzipInflate時,它都返回「nil」。在iPhone上膨脹gzipped字節

我嘗試鏈接到libz,爲模擬器和設備建立,並嘗試一個乾淨的版本,但沒有成功。

NSData對象包含有效的gzip壓縮數據。

任何幫助,將不勝感激。

EDIT1:這是我使用的代碼。

  uint8_t appendArray[1]; 
      for (int i=0; i != 1024; i++) { 
       appendArray[0] = [self readByte]; // neccessary, because [self readByte] returns a uint8_t. 
       [tempdata appendBytes:appendArray length:1]; 
      } 
      NSData *almostdata = [tempdata gzipInflate]; // Returns nil 
      assert(almostdata != nil); // Fails 

Tempdata是一個NSMutableData對象,具有1024字節的容量。 readByte是一種從網絡流中讀取一個字節的方法。 gzipInflate方法來自here。 來自流的數據長度爲1024個字節,同時被壓縮。

EDIT2:這是一個Z_BUF_ERROR,但輸出緩衝區對於字節來說足夠大。

EDIT3:這個問題只是因爲我誤讀了網絡協議而引起的。在嘗試unzip之前,我只需要合併流中的所有數據。

+0

發佈您的代碼。 – 2012-01-30 21:26:18

+0

我已經添加了代碼。 – magmastonealex 2012-01-30 21:59:06

回答

0

編輯:這個問題只是因爲我誤讀網絡協議而引起的。在嘗試unzip之前,我只需要合併流中的所有數據。

1

我不能看到所有的代碼 - 所以這是一個位在黑暗中刺 - 但它看起來像你讀入uselessArray - 但你從appendedArray追加數據...

應該這樣:

uselessArray[0] = [self readByte]; // neccessary, because [self readByte] returns a uint8_t. 
[tempdata appendBytes:appendArray length:1]; 

是這樣的:

uselessArray[0] = [self readByte]; // neccessary, because [self readByte] returns a uint8_t. 
[tempdata appendBytes:uselessArray length:1]; 

+0

如果那是修復,那將會很棒,但這只是複製和粘貼到這裏的一個問題。 – magmastonealex 2012-01-30 22:51:55