2012-09-03 14 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