2011-09-05 9 views
0

私は現在、ASIHTTPRequestラッパーを使用してPHPデータベースに接続していますが、基本的にはデータベースに照会してxml形式の結果セットを返します。NSXMLParserdelegateメソッドからtableviewの行数を返す方法は?

そこから私は、データの初期の蒸気がダウンしていたときに、データが最初にすべてのNSMutableData変数を通過するこれにより、次にNSXMLParserDelegate方法

//.. 
parser:didStartElement:namespaceURI:qualifiedName:attributes: 
//.. 
parser:foundCharacters: 
//.. 
parser:didEndElement:namespaceURI:qualifiedName: 
//.. 

にすべてrequiered情報を渡し、私のパーサメソッドをインスタンス化します。

私はその後、私のパーサであればなステートメントを持っている:didStartElement:名前空間URI:修飾名は:属性:ここから条件

if ([elementName isEqual:@"item"]) { 
     // NSLog(@"Found title!"); 
     itemString = [[NSMutableString alloc] init]; 
    } 

に基づいて文字列にすべてのデータを渡している私は、どのように私疑問に思ってnumberOfSectionsInTableViewメソッドの内部でtableviewの行数を設定しますか?どのような変数を数えるか、他に何かを作成する必要がありますか?

答えて

0

私があなたを誤解していない場合、以下の質問が役に立ちます。

1 elementDidEndメソッドで、ある配列のアイテムのすべての値を既に保存しています。

2次のようなコードを記述します。
if([parser parse]){ [tableView reloadData]; }

これは、解析が完了するとテーブルをリロードします。

3すべての項目値を格納し、その配列で表を埋める配列の戻り数。

その他のヘルプが必要な場合は投稿してください。

+0

は、いや、私は今、配列に私の結果を入れています。このセクション内の行のこのコードの復帰番号を返し、内部のその上で、カウントを呼び出す必要がありますしかし、何かの前にその呼び出しが解析され、行が表示されないようにします。コードの一部分がうまく動作しないので、何をすべきか分かりません。 –

+0

これを試すことができます。 1. didEndElementメソッドでは、XMLの最後のタグの条件を1つ追加します。 2.最後のタグが見つかると、テーブルがリロードされます。これにより、XMLが解析された後にテーブルがリロードされることが確認されます(performSelectorでそのメソッドを呼び出す必要があります)。上記のメソッドが私のコードでここで働いているので、テーブルを適切な配列で埋めていることを確認してください。それでも動作しない場合は、テーブルのロードに使用したコードを投稿してください。 – Mohammad

+0

+ reloadがタイプIDに関連していると警告しています。 –

1

アップルのサンプルソースコード でXMLを解析するための偉大なチュートリアルでは、エラーが発生していることがSeismicXML

あなたの質問で

http://developer.apple.com/library/ios/#samplecode/SeismicXML/Listings/Classes_RootViewController_m.html#//apple_ref/doc/uid/DTS40007323-Classes_RootViewController_m-DontLinkElementID_8

と呼ばれていますがあります:numberOfSectionsInTableViewは、行数を返しませんでした - セクションがカウント返します。あなたcasesifほとんどが通常のテーブルビューを持っている、それは1

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [YOUR_ARRAY count]; 
} 
+0

私はセクションカウントでそれをしたと信じていますが、解析が処理される前にビューがロードされているという事実の問題を修正していないので、データは表示されません。 –

+0

はい、最初は配列が空であり、行がないので、[your_array count]は0を返しますが、解析操作が終了して配列にデータを取り込むと、tableviewに次のようにデータを再読み込みする必要があります。もっと言及された - [your_table_view reloadData];より多くのコードを表示すると、より良い結果を得ることができます – Sergnsk

関連する問題