6

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

提前感谢,安倍。

4

4 回答 4

5

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

于 2012-08-01T09:49:02.410 回答
3

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

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

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

但提醒您无论如何都需要了解UITableView和相关协议的基础知识:UITableViewDelegateUITableViewDataSource。文档没问题,但您甚至可能想看一下关于表格视图的WWDC 2011 播客。

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

于 2012-08-01T10:26:33.280 回答
2

实际上 NSFetchedResultsController 有点难以理解。

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

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

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];    
}
于 2012-08-01T10:16:16.477 回答
0

您可以使用 ASIHTTPRequest 库从您的服务器获取数据。您可以在http://allseeing-i.com/ASIHTTPRequest/上找到有关它的一些信息

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

在链接的教程中,您必须在 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 上。

于 2012-08-01T09:58:00.777 回答