如何在uitableview上从服务器加载动态数据

时间:2012-08-01 09:45:54

标签: ios

我是ios开发的初学者,我需要在tableview上从服务器加载动态数据,如果有人知道代码请分享。

提前致谢, 安倍。

4 个答案:

答案 0 :(得分:5)

使用核心数据和NSFetchedResultsController,通过tableview控制器的委托方法从NSFetchedResultsController实例填充tableview。它反映了对数据库的自动删除,添加和任何类型的更新到tableview。

答案 1 :(得分:3)

根据模型的复杂程度以及所需的缓存策略类型,可以使用不同的方法将表视图连接到远程数据源。这里有很多东西可以说,但如果你是初学者,最好的方法是看看互联网上的一些例子。

有少数"用于网络通信的开源项目,提供良好的方法和良好的示例(包括源代码)来处理服务器驱动的应用程序。我引用了我更喜欢的两个:

  • AFNetworking:这个库和UITableViewController的示例源可能符合您的需要
  • RestKit:如果要将服务器返回的数据映射并保存到本地模型,这将变得有用。这可能需要更多的学习时间。

但请注意,您无论如何都需要了解UITableView及相关协议的基础知识:UITableViewDelegateUITableViewDataSource。文档还可以,但您甚至可以查看有关表格视图的WWDC 2011 podcast

此外,如果你还需要数据持久性,你应该开始研究Core DataNSFetchedResultControllers,就像illis和Bogdan所说的那样,但事情会变得有点棘手。

答案 2 :(得分:2)

实际上NSFetchedResultsController有点难以理解。

您应该尝试自己处理UITableView数据。看看UITableViewDelegate protocol

以下是您可以遵循的一些步骤:

1)创建一个将继承UITableViewDelegate和UITableViewDataSource的类

@interface YourTableViewController: UITableViewController<UITableViewDelegate,UITableViewDataSource>

2)创建一个用于保存数据的数组

@property (nonatomic,retain) NSMutableArray *data;

3)实施这些方法:

    - (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
        DataObject *d=[data objectAtIndex:indexPath.row]; // selected data, now you can handle it        
    }

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return data.count;
    }

    - (UITableViewCell *)tableView:(UITableView *)mtableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        NSString *ident=@"CatalogCell";       
        UITableViewCell *cell=(UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:ident];       
        if (cell==nil) {           
            cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ident] autorelease];          
        }
        DataObject *d=[data objectAtIndex:indexPath.row];
        [cell.textLabel setText:d.someField];      
    }

4)选择一些方法(NSURLConnection,ASIHTTPRequest(对不起,只允许2个超链接)或其他方法)从服务器获取数据

-(void) parseData:(NSString *) d {
    NSArray * parsedData=[self someMethodToParseData:d];
    [data setArray:parsedData];
    [tableView reloadData];    
}

答案 3 :(得分:0)

您可以使用ASIHTTPRequest库从服务器获取数据。您可以在http://allseeing-i.com/ASIHTTPRequest/

上找到有关它的一些信息

您可以使用http://www.edumobile.org/iphone/iphone-programming-tutorials/how-to-use-tableview-in-iphone/此链接获取有关tableview的更多信息。

在link的教程中,您必须在viewDidload方法中请求您的数据。

- (void)viewDidLoad {

    // Request your data on this line.
    /*NSArray *array = [[NSArray alloc]     initWithObjects:@"Sleepy",@"Sneezy",@"Bashful",@"Happy",@"Doc",
                        @"Grmpy",@"Dopey",@"Thorin",@"Dorin",@"Nori",
                        @"Ori",@"Balin",@"Dwalin",@"Fili",@"Kili",@"Oin",                                                
                        @"Gloin",@"Bifur",@"Bofur",@"Bombur",nil ];*/

     self.listData = array;
     [array release];
     [super viewDidLoad];
}

所有这些都只是用法。您必须体验更多示例才能使用更复杂的情况。我将为教程添加更多代码以从服务器获取数据并在tableview上显示。