2

iOS7で非常に奇妙な問題があります。

標準の NSXMLParser を使用します。iOS6 では、XML が有効で、NSData がゼロ バイトまたは無効なバイトを含む場合、すべて正常に動作します。

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

iOS7 では、有効な XML データがある場合にのみ、パーサーが期待どおりに機能します。データが 0 バイトの場合、どのデリゲート メソッドも呼び出されません。

目指すべき方向を見つけるのを手伝ってください。ありがとう。

アップデート。すべてのデリゲート メソッドが実装されています (iOS6 でうまく機能します)。データにゼロ以外のバイト (およびデータ == nil) が含まれているかどうかを確認できますが、有効でない XML の状況も処理する必要があります...

4

2 に答える 2

3

iOS 7では、データが 0 バイトであるか、エンコーディングparser:parseErrorOccurred:で有効でない場合、デリゲート メソッドが呼び出されていないようです。UTF8

解析の終了を検出するために使用する必要のないメソッドparserDidEndDocument:と、parser:parseErrorOccurred:メソッドの戻り値を確認するだけでよいことがわかりparseました。

私はここ数年ずっと盲目だったようです:)

マーティン R に感謝します。

于 2013-11-12T17:11:08.520 に答える