iPhone上的JSON(三)JSON+UITableView
来源:互联网 发布:淘宝充气娃娃真人演示 编辑:程序博客网 时间:2024/06/04 18:02
既然JSON这么好,它怎么和UITableView结合使用呢?
首先看看我们的JSON文件吧:
{"老张家":["大张","二张","三张"],"老李家":["大李","二李"]}
完成的作品是这样样子的~~(点击放大阿~~)
好,开始打代码吧。
1,首先copy JSON库到当前的Project里面。
2,建立一个数据源类。我给它起名叫MyDataSource, 看看里面都有什么吧:
@interface MyDataSource : NSObject {}+ (id)dataSource;@end #import "JSON.h" @implementation MyDataSource+ (id)dataSource{NSString* JSONString = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"data" ofType:@"json"] encoding:NSUTF8StringEncoding error:nil];return [JSONString JSONValue];}@end
里面非常简单,只有一个类方法dataSource。在其中我们读取json文件的内容到一个NSString中,并用JSON框架来解读成一个NSDictionary,返回值为id。因为虽然大多的时候最外的对象都为NSDictionary,但是出于严谨,万一是NSArray不就崩溃了。所以使用id,这样其实就有再次可以用的特性了。
3,建立一个UITableViewController, 然后作适当的设置:
#import "MyTableViewController.h"#import "MyDataSource.h" @implementation MyTableViewController - (id)initWithStyle:(UITableViewStyle)style{if (self = [super initWithStyle:style]) {myData = [[MyDataSource dataSource] retain];//在这里我们初始化myData,其实就是一个id对象//传入由MyDataSource解析出的NSDictionary}return self;} #pragma mark Table view methods - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return [myData count]; //有多少个section,也就是“几家”} - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [[myData valueForKey:[[myData allKeys] objectAtIndex:section]] count];//这里我们需要告诉UITableViewController每个section里面有几个,也就是“一家里面有几口人”} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } //上面的东西都是重复白给的,平时没事不用想为什么,照抄就可以了cell.textLabel.text = [[myData valueForKey:[[myData allKeys] objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row];//这句看上去复杂,但是其实不过是在特定section里面找到对应的array,//然后在array中找到indexPath.row所在的内容 return cell;} - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{return [[myData allKeys] objectAtIndex:section];//这里设置对应section的名字,很简单allKey返回所有的键值为一个array,也就是“张家”,“李家”//然后用objectAtIndex: 来找出究竟是哪一个就可以了!} - (void)dealloc { [myData release]; //“我们是runtime的好市民”...release就好Alan...... [super dealloc];}@end
4,在主程序代理 xxxAppDelegate 里面初始化这个UITableViewController然后添加它的view到window的subview中就OK拉!
5,编译运行,没有错误就万事大吉!大吉!
阿弥陀佛,祝各位愉快~
- iPhone上的JSON(三)JSON+UITableView
- iPhone上的JSON(三)JSON+UITableView
- iPhone上的JSON(三)JSON+UITableView
- iPhone上的JSON
- iPhone上的JSON
- iPhone上的JSON
- iPhone上的JSON(一)
- iPhone上的JSON(二)
- iPhone上的JSON(二)
- iPhone平台上的json-framework
- iPhone平台上的json-framework
- iphone json的使用
- iPhone上的JSON,NSArray,NSSet,NSDictionary总结
- JSON on BlackBerry黑莓上的JSON
- C++中Json的用法(上)
- Json学习(三):FastJson操作Json
- Json(三)之php操作json
- iphone开发之Json数据的解析
- iPhone上的JSON
- Android应用程序的Java数据更新和UI同步改变
- iPhone上的JSON(二)
- Android Activity
- 使用Windows PE部署Windows镜像
- iPhone上的JSON(三)JSON+UITableView
- 大话设计模式学习(十四)——组合模式
- WinFrom调用执行Clementine模型的方法
- 回家有感
- 今天心情
- strspn strcspn 函数
- 毕业后五年拉开距离
- 我的微博
- GridView固定表头的四种方法