XMLを解析できるアプリを作ろうとNSXMLParserを使ってますが
1度目のXML解析は無事に実行できるけど、2度目に実行すると
解析結果が表示されない。
どうやら、解析の途中でエラーが出ているようです。
NSXMLParserが解析の途中で終了してしまう場合のエラーを
確認するには以下のコードを追加するとエラーの詳細が
見れるようになります。
// エラー - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError { // エラーの内容を出力 NSLog(@"Error: %i, Column: %i, Line: %i, Description: %@", [parseError code], [parser columnNumber], [parser lineNumber], [parseError description]); }
【結果】
Error: 64, Column: 5939, Line: 1, Description: Error Domain=NSXMLParserErrorDomain Code=64
“The operation couldn’t be completed. (NSXMLParserErrorDomain error 64.)”
どうやら「NSXMLParserErrorDomain error 64.」ってことらしいです。
エラーの詳細はわかりましたが、どこを直せばよいのかぜんぜんわかりません。
う〜ん、どうしよっかな。
しばらくコードを見ながら悩みましたが
原因が分かりました。
ネットから取得したXMLデータをNSURLConnectionで取得して
「NSMutableData *totalData;」に追記する形で保持していたのですが
2回目のXMLデータを取得するときは「totalData」を初期化してませんでした。
1回目と同じように「totalData」を以下のコードで書いて
初期化したら動くようになりました。
totalData = [NSMutableData data]; //XMLを取得する前に2回目もデータを初期化
Xcodeでは「NSXMLParser」のエラーと表示されましたが
原因は「NSXMLParser」にデータを渡す前の「NSURLConnection」に
問題がありました。
なぜ、ここを直したら上手く動いたのかが
よくわかりませんが、動くようになったので良しとしましょう。
こういうエラーの原因がすぐにわかるようになりたいです。