2012-09-03 13 views
1

收集數據我有最壞的互聯網連接的ATM,所以對不起,如果這已問過..從NSURLConnection的

我有一個NSURLConnection的用於獲取一些JSON數據。到現在爲止,使用委託方法didReceiveData:(NSData *)數據來保存接收到的數據非常合適。我同時至少從七個不同的頁面下載數據。今天,在更新json頁面以包含更多數據之後,NSData對象似乎已損壞。我最近被告知,這個代表並沒有返回整個數據,從而破壞了我的信息。

是否有像didFinish這樣的其他代表只返回完整的完整對象?或者我必須自己做這個,比如合併兩個NSData的?

對不起愚蠢,語法錯誤致力於iPhone自動更正。

回答

7

必須永遠,永遠依靠didReceiveData:返回完整的數據,因爲它會打破的一天。你必須收集你的數據塊中的NSMutableData:

NSMutableData *d = [[NSMutableData alloc] init]; 

- (void)connection:(NSURLConnection *)c didReceiveData:(NSData *)data 
{ 
    [d appendData:data]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)conn 
{ 
    // 'd' now contains the entire data 
} 

如果是不方便,你能避免使用NSURLConnection的使用使用後臺線程來獲取數據在一塊:

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://web.service/response.json"]]; 
+1

謝謝!正是我需要的:) – Sti