2

我在 iOS7 上有一个非常奇怪的问题。

我使用标准的 NSXMLParser。在 iOS6 上一切正常 - 当 XML 有效以及 NSData 为零字节或包含无效字节时。

self.dataParser = [[[NSXMLParser alloc] initWithData:data] autorelease];
[self.dataParser setDelegate: self];
[self.dataParser parse];

在 iOS7 上,解析器只有在它具有有效的 XML 数据时才能按预期工作。如果数据为零字节,则不调用任何委托方法。

请帮我找到一个方向。谢谢。

UPD。所有委托方法都已实现(它们在 iOS6 上运行良好)。我可以检查数据是否包含非零字节(并且数据 == nil),但我还必须处理无效的 XML 情况......

4

2 回答 2

3

当数据为零字节或在编码中parser:parseErrorOccurred:无效时,似乎不会在 iOS 7上调用委托方法。UTF8

这对我来说是一个启示,我不必使用parserDidEndDocument:parser:parseErrorOccurred:方法来检测解析完成,我可以检查parse方法的返回值!

好像这些年我一直瞎了:)

非常感谢 Martin R。

于 2013-11-12T17:11:08.520 回答
0

你应该经常检查你data是否还好。您应该实现委托方法:

parser:parseErrorOccurred

并检查错误并处理错误。

在您的情况下,您只应该检查if(!data).

于 2013-11-12T15:28:48.587 回答