2009-07-07 8 views
2

私のアプリはTabBarControllerで構成され、各タブはUITableViewで構成されています。複数のXMLファイルを1つ以上のオブジェクトクラスに解析しますか?

起動時に、自分のサーバーからObjectクラスにXMLファイルを解析し、オブジェクトを最初のtableviewに表示します。

私の質問は、2番目のXMLファイルを解析するときに何をしますか?現在、 "XML-file-2"の情報は、 "XML-file-1"で解析されたオブジェクトを上書きします。これについてはどうしたらいいですか? XMLファイルごとに別のObjectクラスを設定するのか、それともこの問題を回避する別のクラスがあるのですか?

私はNSXMLParserを使用しています。

答えて

1

I XMLParserの2つのインスタンス(読みたいXMLファイルごとに1つ)を考慮する必要があると考えてください。お互いに影響を与えることなく、同時に多くのファイルをXMLのように読むことができます。モジュール化されています。

+0

これは私の最初の考えがこの問題を解決する最善の方法であったことです。いくつかのObjectクラスを設定して各XMLからオブジェクトを保持し、それぞれがXMLを持ってファイルを解析します。ところで – runmad

+0

私はXMLParserのスーパークラスを作成してから、XMLParserサブクラスのXMLファイル固有のコードを分割しました。よく働く。 また、performSelectorInBackgroundを実行して、バックグラウンドで解析し、タブ間に挟まれているように感じさせないようにしました。 – runmad

0

...既に存在するデータを上書きしないでください...?

あなたがUITableViewにコンテンツを表示しているなら、どこかにNSArrayがあることを喜んで賭けてください。うまくいけば、これを適切に設定しておけば、NSArrayにはモデルオブジェクトが含まれていて、それぞれがあなたのUITableViewの1つの行に対応します。しかし、NSMutableArrayを使うことをお勧めします。次に、2番目のXMLファイルを解析してモデルオブジェクトを構築するときは、NSMutableArrayのaddObject:メソッドを使用してから、UITableViewでreloadDataを使用します。

+0

ここParser.mファイルからコードスニペットです: http://pastie.org/537227 歓迎任意のコメント... – runmad

+0

@CanadaのDev - それは私にはOKに見えます。それは働いていないのですか? NSXMLParserを作成するときに、このXMLParserオブジェクトをデリゲートとして設定することを覚えていますか? –

+0

ええ、すべてが私のAppDelegateで正しく設定されているはずです:http://pastie.org/538494 – runmad

1

on the snippet(http://pastie.org/537227)製品アレイ(appDelegate.products)を新しい可変配列に設定しています。 2番目の実行をappDelegate.products,に追加する場合は、既にappDelegate.productsにオブジェクトがあるかどうかを確認してください。新しい配列を割り当てないで、NSMutableArrayのaddObjectを使用して追加してください:

0

notnoopが既に述べたように、複数のNSXMLParserインスタンスを作成するのが最適な解決策です。
Simple RSS Readerと呼ばれるオープンソースのiPhone RSSリーダーは、今、あなたが望むものの良いサンプルになるでしょう。
Simple RSS Readerをそのまま使用することができます。RSSParser

HTHは