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 文件中的“便笺”数组中。并且注释包含:

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;
    }   
} 

这种成功地向表格视图添加了一条新推文,但它没有正确显示noteIdand ,timestamp因为我只是将userIdand添加noteTextnotes数组中。

那么我应该在向服务器添加新注释后立即刷新表格视图吗?这是我唯一需要做的吗?我完全迷失了,不确定我是否走在正确的轨道上。

4

1 回答 1

0

如果在服务器端添加noteId& (没有问题)并且如果您通过上述代码成功地从服务器检索数据;那么你应该timestamp

  1. 首先将数据发布到服务器
  2. 成功完成发布请求后,再次从服务器获取数据
  3. 成功获取数据后,您应该使用最新数据重新加载表

所以,的,你的想法是正确的。

于 2013-03-18T07:00:06.057 回答