2013-10-06 53 views
0

我有我使用在委託協議使用NSURLConnection的在NSURLConnection中控制接收數據的順序?

NSURL *url = [NSURL URLWithString:URLString]; 
     NSMutableURLRequest *urlRequest = [NSMutableURLRequest 
              requestWithURL:url 
              cachePolicy:NSURLRequestUseProtocolCachePolicy 
              timeoutInterval:2.0f]; 
      // Run network request asynchronously 
     NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self]; 

接收來自遠程服務器相關聯的圖像的URL的陣列

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    // As chuncks of the image are received, we build our data file 
    [self.imageData appendData:data]; 
} 

最後

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
// All data has been downloaded, now we can set the image in the images array 
_img = [UIImage imageWithData:self.imageData]; 
[self.imagesArray insertObject:_img atIndex:_index]; 
[self.imageData setLength:0]; 
_index = _index+ 1; 
} 

,但該命令的收到並不總是相同的發送URL請求的順序我嘗試使用實例變量索引將這些圖像插入薩姆在圖像數組中的順序,但這並不總是工作,我仍然得到無序列表,任何人都可以指出我在如何實現這一目標的正確方向。

回答

0

一般情況下,如果我下載圖像,我依靠優秀的AFNetworking類。 ​​這提供你正在尋找的整體行爲(一個需要一個UIImageView,而默認的圖像,另一隻會提供圖片字節)

如果是有原因的,你必須使你自己,那麼我將有一個下載名稱的字典NSURLConnection。這將允許您然後找出​​哪些下載已經異步完成,並在其上正確執行。

如果您確實是指下載對象的同步傳送,則一次發送一個,等待響應,然後在完成時開始下一個。

+0

感謝人... setImageWithURLRequest做得很漂亮 – carelesslyChoosy

1

我在我自己的實現做什麼是創建一個自定義的Objective-C對象,我插入一個可變的數組(我們稱之爲「RemoteImageObject」),其中包含圖像數據它來自的URL。

你要做的是創建一個請求,創建一個RemoteImageObject並將URL添加到它,並將其添加到你的數組中。

當請求返回圖像數據時。在你的數組中查找你的RemoteImageObject並將圖像數據添加到它。

而當您想要顯示圖像數據時,只需爲每個RemoteImageObjects獲取imageData。

有意義嗎?

+0

你能分享一些代碼嗎? – carelesslyChoosy

+0

你是否建議像addValue:forHTTPHeaderField: – carelesslyChoosy