我如何理解这个崩溃报告(SIGABRT)?关于在另一台主机+ iPad上解析XML文件

时间:2010-08-20 05:57:51

标签: iphone ipad

基本上,想象一下。我有一台iPad,一台带有Apache HTTP服务器的Windows计算机,它托管一个XML文件,还有一台将它们连接在一起的Wi-Fi网络。

我正在使用的XML解析器是NSXMLParser。

在我的- (void)parseXMLFileAtURL方法中,这是我的代码。

NSError * error;
NSURLResponse * response;

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://%@/UserBedData.xml",[appDelegate.hostipadd objectAtIndex:0]]] cachePolicy :NSURLRequestReloadIgnoringCacheData timeoutInterval:6.0];
[request setHTTPMethod:@"GET"];
NSData * responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error] ;

xmlParser = [[[NSXMLParser alloc] initWithData:responseData] autorelease];

[xmlParser setDelegate:self];

// Depending on the XML document you're parsing, you may want to enable these features of NSXMLParser.
[xmlParser setShouldProcessNamespaces:NO];
[xmlParser setShouldReportNamespacePrefixes:NO];
[xmlParser setShouldResolveExternalEntities:NO];

[xmlParser parse];

如果我在XML文件中有很少的数据(在Windows计算机上),解析工作正常,我会得到数据并存储它们等。解析后,我会请求另一个文件{ {1}}文件,根据请求,.php XML文件。对数据一致性进行排序。方法是这样的。

delete('unlink')

现在,当它成功解析它时,我可以在PC上看到XML文件已被删除。 但问题就出现了,当我在XML文件中有数百条记录时,我认为无论出于何种原因,解析数据和崩溃都需要很长时间。错误日志如下。我确定在解析时发生错误,因为XML文件未被删除。这意味着未调用- (void)parserDidEndDocument:(NSXMLParser *)parser NSError * error; NSURLResponse * response; //HTTPREQUEST to delete send a GET request to the server to a PHP file with pw = md5hash of a password. This is to delete the XML file NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://%@/delete.php",[appDelegate.hostipadd objectAtIndex:0]]] cachePolicy :NSURLRequestReloadIgnoringCacheData timeoutInterval:5.0]; NSData * responseData = [[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error] autorelease] ;} 方法。

我该如何解决这个问题?

parserDidEndDocument

1 个答案:

答案 0 :(得分:0)

这似乎与XML解析没有直接关系。相反,它似乎是加载了一些有一些不一致的视图:

查看线程0的第14-16行,它直接作为加载视图的结果,作为对btnRefresh中处理按钮的响应:(SelectionScreen.m的第188行)。

14  UIKit         0x000693f2 -[UITableViewController loadView] + 46 
15  UIKit         0x0005b2c0 -[UIViewController view] + 24 
16  MedicalBed    0x0000ce7e -[SelectionScreen btnRefresh:] (SelectionScreen.m:188) 

此方法调用一个触发nib加载的view方法。这就是出错的地方。

因此,请尝试检查您的nib文件是否存在不一致。

指向此的另一个提示是,线程2仍然有一些活动的NSURLConnection。除非您有多个连接,否则这可能指向XML仍在加载。

希望这有帮助。