1

サーバーからNSURLConnctionを介してデータをフェッチし、フェッチされた配列からテーブルビューにデータを入力したい。numberOfRowsInSectionデータはNSURLConnectionデリゲートメソッドからのログに表示されますが、UITableViewデリゲートメソッド(DM)が以前に起動することに気付きました

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {}

NSURLConnectionのDM。データを正しく取得するのが難しい場合でも、行数は常に0(ゼロ)であるため、これは問題を引き起こします。この問題を解決するにはどうすればよいですか。アイデアを共有してください。ありがとうございます。

4

2 に答える 2

2

didRecieveDataは複数回呼び出される可能性があり、すべてのデータがフェッチされたことを示すものではありません。次のようなプライベートプロパティをクラスに実装する必要があります。

@property (nonatomic,retain) NSMutableData tableData;

そしてあなたのdidRecieveDataで;

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
   [self.tableData appendData:data];
}

その後、接続が閉じられたとき

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    // use tableData and refresh table...
    [self.tableView reloadData];
}
于 2012-10-08T08:58:33.647 に答える
1

テーブルビューを更新するに[tableView reloadData];は、最後に呼び出す必要があります。-connection:didReceiveData:

編集:バルトゥは正しいです!あなたは最後にそれを呼び出す必要があります-connectionDidFinishLoading:

于 2012-10-08T08:57:03.493 に答える