我是ios开发的初学者,如果有人知道代码,我需要从tableview上的服务器加载动态数据,请分享。
提前感谢,安倍。
使用核心数据和NSFetchedResultsController,通过 tableview 控制器的委托方法从 NSFetchedResultsController 实例填充 tableview。它自动将数据库上的删除、添加和任何类型的更新反映到 tableview 上。
根据模型的复杂程度以及所需的缓存策略类型,有不同的方法可以将表视图连接到远程数据源。这里有很多话要说,但如果你是初学者,最好的办法是看看互联网上的一些例子。
网络通信的“少数”开源项目提供了处理服务器驱动应用程序的好方法和好例子(包括源代码)。我引用了我更喜欢的两个:
但提醒您无论如何都需要了解UITableView和相关协议的基础知识:UITableViewDelegate和UITableViewDataSource。文档没问题,但您甚至可能想看一下关于表格视图的WWDC 2011 播客。
此外,如果您还需要数据持久性,您应该开始研究Core Data和NSFetchedResultControllers,正如 illis 和 Bogdan 所说,但事情会开始变得有点棘手。
实际上 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];
}
您可以使用 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 上。