标签:
1 @property(nonatomic, strong) NSArray *cars;
1 // 这里不能用KVC,封装car model再放到array中,不能直接存储array
2 NSArray *carsArray = dictionary[@"cars"];
3 NSMutableArray *mcarsArray = [NSMutableArray array];
4 for (NSDictionary *dict in carsArray) {
5 Car *car = [Car carWithDictionary:dict];
6 [mcarsArray addObject:car];
7 }
8
9 self.cars = mcarsArray;
1 Car.m
2 - (instancetype) initWithDictionary:(NSDictionary *) dictionary {
3 if (self = [super init]) {
4 // 当dictionary中的键名跟Model中的成员名一致的时候,可以使用KVC
5 [self setValuesForKeysWithDictionary:dictionary];
6
7 // self.icon = dictionary[@"icon"];
8 // self.name = dictionary[@"name"];
9 }
10
11 return self;
12 }
13
1 /** 设置section头部标题 */ 2 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
1 /** 索引 */
2 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
3 // 使用KVC取出数组,不用使用遍历封装
4 return [self.carGroups valueForKey:@"title"];
5 }
1 // 2 // Car.h 3 // CarGroup 4 // 5 // Created by hellovoidworld on 14/12/2. 6 // Copyright (c) 2014年 hellovoidworld. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 11 @interface Car : NSObject 12 13 @property(nonatomic, copy) NSString *icon; 14 @property(nonatomic, copy) NSString *name; 15 16 - (instancetype) initWithDictionary:(NSDictionary *) dictionary; 17 + (instancetype) carWithDictionary:(NSDictionary *) dictionary; 18 + (instancetype) car; 19 20 @end
1 //
2 // Car.m
3 // CarGroup
4 //
5 // Created by hellovoidworld on 14/12/2.
6 // Copyright (c) 2014年 hellovoidworld. All rights reserved.
7 //
8
9 #import "Car.h"
10
11 @implementation Car
12
13 - (instancetype) initWithDictionary:(NSDictionary *) dictionary {
14 if (self = [super init]) {
15 // 当dictionary中的键名跟Model中的成员名一致的时候,可以使用KVC
16 [self setValuesForKeysWithDictionary:dictionary];
17
18 // self.icon = dictionary[@"icon"];
19 // self.name = dictionary[@"name"];
20 }
21
22 return self;
23 }
24
25 + (instancetype) carWithDictionary:(NSDictionary *) dictionary {
26 return [[self alloc] initWithDictionary:dictionary];
27 }
28
29 + (instancetype) car {
30 return [self carWithDictionary:nil];
31 }
32
33 @end
1 // 2 // CarGroup.h 3 // CarGroup 4 // 5 // Created by hellovoidworld on 14/12/2. 6 // Copyright (c) 2014年 hellovoidworld. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 11 @interface CarGroup : NSObject 12 13 @property(nonatomic, strong) NSArray *cars; 14 @property(nonatomic, copy) NSString *title; 15 16 - (instancetype) initWithDictionary:(NSDictionary *) dictionary; 17 + (instancetype) carGroupWithDictionary:(NSDictionary *) dictionary; 18 + (instancetype) carGroup; 19 20 @end
1 //
2 // CarGroup.m
3 // CarGroup
4 //
5 // Created by hellovoidworld on 14/12/2.
6 // Copyright (c) 2014年 hellovoidworld. All rights reserved.
7 //
8
9 #import "CarGroup.h"
10 #import "Car.h"
11
12 @implementation CarGroup
13
14 - (instancetype) initWithDictionary:(NSDictionary *) dictionary {
15 if (self = [super init]) {
16 self.title = dictionary[@"title"];
17
18 // 这里不能用KVC,封装car model再放到array中,不能直接存储array
19 NSArray *carsArray = dictionary[@"cars"];
20 NSMutableArray *mcarsArray = [NSMutableArray array];
21 for (NSDictionary *dict in carsArray) {
22 Car *car = [Car carWithDictionary:dict];
23 [mcarsArray addObject:car];
24 }
25
26 self.cars = mcarsArray;
27 }
28
29 return self;
30 }
31
32 + (instancetype) carGroupWithDictionary:(NSDictionary *) dictionary {
33 return [[self alloc] initWithDictionary:dictionary];
34 }
35
36 + (instancetype) carGroup {
37 return [self carGroupWithDictionary:nil];
38 }
39
40 @end
1 // 2 // ViewController.m 3 // CarGroup 4 // 5 // Created by hellovoidworld on 14/12/1. 6 // Copyright (c) 2014年 hellovoidworld. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 #import "CarGroup.h" 11 #import "Car.h" 12 13 @interface ViewController () <UITableViewDataSource> 14 @property (weak, nonatomic) IBOutlet UITableView *tableView; 15 16 // 所有的车品牌 17 @property(nonatomic, strong) NSArray *carGroups; 18 19 @end
iOS基础控件之 汽车品牌展示 Model嵌套/KVC/TableView索引
标签:
原文地址:http://www.cnblogs.com/kengsir/p/4235299.html