2013-11-02 44 views
1

我對我在iOS7開發中遇到的問題感興趣。我用下面的代碼段,以從網絡服務器加載圖像:NSData initWithContentsOfURL讀取並非所有的數據,但只能在設備上

NSData* data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://someServer/someImage.jpg"]]; 

這類似於在模擬器迷人,準確讀取的圖像具有134185個字節。從該數據創建UIImage按預期工作。 但是,一旦我在設備上測試完全相同的代碼(iPad Mini,iOS 7.03),它只是從相同的URL讀取14920字節。不用說,我無法從該數據創建UIImage,那麼創建失敗並返回nil。 讀取不會產生任何錯誤(沒有控制檯輸出,並且使用帶有錯誤輸出參數的簽名在這裏返回nil)。有沒有我在這個相當簡單的任務中錯過的東西?有沒有發現這個在網絡上什麼...

感謝,habitoti

+0

請不要在遠程URL上使用-initWithContentsOfURL:。在主線上它會導致掛起。在後臺線程上,仍然有問題http://akosma.com/2010/05/28/initwithcontentsofurl-methods-considered-harmful/ – iccir

+0

它在一個單獨的線程中,到目前爲止,我沒有任何問題。 – habitoti

回答

2

所以你沒有任何錯誤,並且正在下載。也許嘗試閱讀這個反應,並在這裏發佈(我想這是HTML /文本正文)?
您可以使用NSString方法:
+(instancetype)stringWithContentsOfURL:(NSURL )url編碼:(NSStringEncoding)enc錯誤:(NSError *)錯誤;

+0

你是對的 - 我已經太累了已經看不到明顯的:-) iPad Mini使用了不同的本地化,所以(loooong)URL在小DE/EN部分實際上是不同的。是什麼讓我失明是服務器沒有發送錯誤,而是一個200頁的響應,有一個14k的好HTML頁面,告訴我這個圖像不可用。所以建議實際「讀取」返回的數據將我轉向了正確的方向! – habitoti

0

我可以建議你使用像SDWebImage庫檢索您的圖像,它緩存,並異步下載圖像。

它也有一個UIImageView的類別,所以你可以調用[imageView setImageWithURL:];它會在準備好時加載圖像。

+0

感謝大衛,但在這種情況下不需要緩存。這是一個只顯示一次的閃屏(如果有的話),並且它是異步下載的。 – habitoti

相關問題