Iphone connectionDidFinishLoading在connectionDidReceiveData接收到所有数据之前被调用?
我遇到一个问题,在ConnectionIDReceiveData接收并处理所有数据之前,ConnectionIDFinishLoading收到通知。这个问题之所以出现,是因为我试图在数据到达时对其进行处理,并更新tableview。我认为这种处理会减慢速度,因此,在我处理所有数据之前,会调用ConnectiondFinishLoading,因此我似乎总是错过最后10-15%的数据 根据apple文档,它声明在调用ConnectiondFinishLoading后,代理将不再接收任何调用。是否有可能因为处理一段数据花费了很长时间,然后调用了connectionDidFinishLoading,随后没有使用最终的数据段再次调用connectionDidReceiveData,所以connectionDidReceiveData没有发送所有数据 仅供参考,我尝试在自己的线程中运行数据处理方法,但这似乎没有帮助。顺便说一句,我已经在ConnectionIDFinishLoading中实现了相同的方法,效果很好,但是我正在尝试立即开始处理数据,而不是等待加载所有数据,这可能需要一段时间 这里是代码的概要,尽管我已经删除了处理代码,因为它有点长而且凌乱Iphone connectionDidFinishLoading在connectionDidReceiveData接收到所有数据之前被调用?,iphone,nsurlconnection,Iphone,Nsurlconnection,我遇到一个问题,在ConnectionIDReceiveData接收并处理所有数据之前,ConnectionIDFinishLoading收到通知。这个问题之所以出现,是因为我试图在数据到达时对其进行处理,并更新tableview。我认为这种处理会减慢速度,因此,在我处理所有数据之前,会调用ConnectiondFinishLoading,因此我似乎总是错过最后10-15%的数据 根据apple文档,它声明在调用ConnectiondFinishLoading后,代理将不再接收任何调用。是否有可
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)newData {
if (!self.data) {
self.data = [[[NSMutableData alloc] init] autorelease];
NSLog(@"data is null");
}
else {
[self.data appendData:newData];
[self processSearchResultsForData:self.data];
}
下面是处理数据的方法
-(void)processSearchResultsForData:(NSMutableData*)newData
{
NSString *newHtmlText = [[NSString alloc] initWithBytes:newData.bytes length:newData.length encoding:NSISOLatin1StringEncoding];
// process new data and create an array newResults with results
// only update results array with new data if results were found
if ([newResults count] > 0) {
self.resultsArray = newResults;
[self updateTableWithResults];
}
}
此方法更新tableView
-(void)updateTableWithResults
{
// do a lot more processing here
// then set results array as table data source
[self.tableView reloadData];
}
thx不太可能出现连接类问题。你能发布你的代码吗?很难猜出是什么问题。是什么让您认为它丢失了数据?[response expectedContentLength]不等于最终转换的[NSString length]的长度。这和我也不同于原始文件和下载的文件,下载的文件缺少拥抱块虽然开始和结束是相同的????在didReceiveData中,看起来你忽略了第一块数据,然后在第二块数据进来后尝试完全处理数据。didReceiveData方法可以被多次调用,在拥有所有数据之前,您无法真正处理这些数据。ProcessSearchResultsforda数据是否崩溃?