0

私はこれに数日間取り組んでいますが、どこにも行きません。これについて何か助けていただければ幸いです。

サーバーからデータ (メモのリストのようなもの) を取得し、それをテーブル ビューに表示するアプリを作成しています。

ユーザーがテーブル ビューでデータを表示/更新する場合、ユーザーは更新ボタンをタップします。次に、次のような「refreshNote」メソッドを呼び出します:(単純なバージョン)

-(IBAction)refreshNote:(id)sender{
    NSString *getNoteCGI = @"http://....../get-notes.cgi";
    NSURL *url = [NSURL URLWithString:getNoteCGI];
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
}

接続が成功したら、取得した各メモ情報を AppDelegate ファイルの「notes」配列に保存します。そしてメモには以下が含まれます:

noteId (auto incremented id)
userId
timestamp
noteText

ここまでは、問題なく動作しています。ただし、新しいメモを追加するには、ユーザーはテーブル ビューに配置された [追加] ボタンをタップします。「追加」ボタンをタップすると、アプリは、userId と noteText のテキスト ボックスを表示するビュー コントローラーに移動します。ビューコントローラーの「送信」ボタンがタップされると、次のメソッドを呼び出しています。

-(IBAction)send:(id)sender{
    NSString *userId = self.userIdTextField.text;
    NSString *note = self.noteTextField.text;
    Note *note = [[Note alloc] init];
    note.userId = userId;
    note.note = note;
    NSString *addCGI = @"http://......../add-note.cgi";
    NSURL *rul = [NSURL URLWithString:addCGI];
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
    addConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];

    if(addConnection){
        AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
        [appDelegate.notes addObject:newNote];
    }else{
        return;
    }   
} 

この種の新しいツイートはテーブル ビューに正常に追加されますが、配列にandを追加しただけなので、noteIdと がtimestamp正しく表示されません。userIdnoteTextnotes

サーバーに新しいメモを追加したら、すぐにテーブル ビューを更新する必要がありますか? それは私がする必要がある唯一のことですか?私は完全に道に迷っており、正しい軌道に乗っているかどうかわかりません。

4

1 に答える 1

0

noteId&timestampがサーバー側で追加されている場合(問題なし) AND上記のコードでサーバーからデータを正常に取得している場合; それからあなたはすべきです

  1. 最初にサーバーにデータを投稿する
  2. post リクエストが正常に完了したら、サーバーからデータを取得します。
  3. データの取得に成功した後、最新のデータでテーブルをリロードする必要があります

はい、あなたは正しい方向に考えています。

于 2013-03-18T07:00:06.057 に答える