+ (instancetype)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
- (instancetype)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
最近一直用它来存放数据model,直接根据它的key来取它的value用,(_dic[@"key_name"])我前几天还在想怎么取到字典的key值,然后做相关的操作,由于没有及时查阅文档,也就把这事忘了,现在突然看到
- (NSArray *)allKeys;
- (NSArray *)allValues;
这两个方法,心里豁然开朗。
关于allkeys和allvalues的一个简单应用,用以加深对这两个属性的理解。
一个简单的UITableView 的显示,section 标题为 老师、学生 row的内容对应为老师1、老师2;学生1、学生2
- (void)viewDidLoad
{
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[selfloadDataFromNetwork];
UITableView * tableView = [[UITableViewalloc] initWithFrame:CGRectMake(0,0, 320,460) style:UITableViewStylePlain];
tableView.delegate =self;
tableView.dataSource =self;
[self.viewaddSubview:tableView];
}
- (void)loadDataFromNetwork
{
//ios6.0 新属性,到时候用用http://www.2cto.com/kf/201303/195697.html
_dataDic = [[NSMutableDictionaryalloc] init];
NSArray * arr = [NSArrayarrayWithObjects:@"学生",@"老师",@"工人",@"农民",nil];
for (int i =0; i < 4; i++) {
NSMutableArray * arr1 = [[NSMutableArrayalloc] init];
for (int j =0; j < 5; j++) {
NSString * str = [NSStringstringWithFormat:@"%@%d",[arrobjectAtIndex:i],j];
[arr1addObject:str];
}
[_dataDicsetObject:arr1 forKey:[arrobjectAtIndex:i]];
}
}
#pragma mark -
#pragma mark UITableViewDataSource
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
//通过section取得对应段的数组数组有多少项就该有多少行
NSArray * arr = [_dataDic.allValuesobjectAtIndex:section];
return arr.count;
}
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * cellID =@"cellID";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellID];
if (cell == nil) {
cell = [[[UITableViewCellalloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:cellID] autorelease];
}
// 获取对应section的所有数据
NSArray * arr = [_dataDic.allValuesobjectAtIndex:indexPath.section];
//取得数组的每一项赋值
cell.textLabel.text = [arrobjectAtIndex:indexPath.row];
return cell;
}
- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
{
//字典当中有多少个就返回多少段
return_dataDic.count;
}
- (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
// 根据section值 获取对应段落的标题
return [_dataDic.allKeysobjectAtIndex:section];
}
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//获取点中行的字符串
NSString * str = [[_dataDicobjectForKey:[_dataDic.allKeysobjectAtIndex:indexPath.section]]objectAtIndex:indexPath.row];
ChatViewController * ctl = [[ChatViewControlleralloc] init];
ctl.text = str;
[selfpresentViewController:ctl animated:YEScompletion:nil];
}
@end