分别有三个文件
.mian.m

int main(int argc, const char * argv[]) {

// 创建学生
Student *stu1 = [[Student alloc]initWithName:@"卞一" sex:@"男" age:@"20"];
Student *stu2 = [[Student alloc] initWithName:@"YIem" sex:@"男" age:@"20"];
Student *stu3 = [[Student alloc]initWithName:@"YI" sex:@"男" age:@"20"];
Student *stu4 = [[Student alloc]initWithName:@"Bian" sex:@"男" age:@"20"];
// 创建学生组
NSMutableArray *arr1 = [NSMutableArray arrayWithObjects:stu1, nil];
NSMutableArray *arr2 = [NSMutableArray arrayWithObjects:stu2, stu3, nil];
NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:stu4, nil];
// 创建字典
NSMutableDictionary *contdic = [NSMutableDictionary dictionaryWithObjectsAndKeys:arr1, @"V", arr2, @"Y", arr3, @"B", nil];
// 添加联系人到匹配的分组
Student *stu5 = [[Student alloc] initWithName:@"BIanYI" sex:@"男" age:@"20"];
// 通过字典找到对应的数组
NSMutableArray *arr5 = [contdic objectForKey:@"B"];
// 将对象添加到对应数组
[arr5 addObject:stu5];
// 创建联系人/数组/Key
Student *stu6 = [[Student alloc]initWithName:@"Bianyi" sex:@"男" age:@"20"];
// 点M里方法实现 这里调用点M
[stu6 addStu:stu6 contdic:contdic];
// forin遍历字典
for (NSString *key in contdic) {
    // 通过key得到数组
    NSMutableArray *arr = [contdic objectForKey:key];
    // 遍历数组
    for (Student *stu in arr) {
        // 得到对象
        [stu info];
    }
}


NSLog(@"%@", contdic.allKeys);
return 0;

}
屏幕快照 2016-01-05 下午8.26.36.png

屏幕快照 2016-01-05 下午8.17.44.png
屏幕快照 2016-01-05 下午8.18.26.png

.Student.h

// 自定义方法

@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *sex;
@property (nonatomic, copy) NSString *age;
// 初始化

  • (instancetype)initWithName:(NSString *)name

                         sex:(NSString *)sex
                         age:(NSString *)age;
    
  • (void)info;
    // 添加/修改学生信息
  • (void)addStu:(Student )stu contdic:(NSMutableDictionary )contdic;

屏幕快照 2016-01-05 下午8.18.37.png

.Student.m

// 
  • (instancetype)initWithName:(NSString *)name

                     sex:(NSString *)sex
                     age:(NSString *)age

    {
    self = [super init];
    if (self) {

    self.name = name;
    self.sex = sex;
    self.age = age;

    }
    return self;
    }

//

  • (void)info
    {

    NSLog(@"%@- %@- %@-", self.name, self.sex, self.age);

    }

// 创建/添加/修改学生信息

  • (void)addStu:(Student )stu contdic:(NSMutableDictionary )contdic
    {
    // 判断输入参数是否合法
    if (0 == stu.name.length || 0 == stu.sex.length) {

    NSLog(@"参数是否合法");
    return;

    }
    // 截取第一个首字母作为key
    NSString *str = [stu.name substringFromIndex:1];
    // str - key
    NSMutableArray *arrTemp = [contdic objectForKey:str];
    if (nil == arrTemp) {

    // 创建数组
    arrTemp = [NSMutableArray array];
    // 将数组添加进字典
    [contdic setObject:arrTemp forKey:@"N"];
    

    }
    // 将对象添加进数组
    [arrTemp addObject:stu];
    }

屏幕快照 2016-01-05 下午8.19.01.png
屏幕快照 2016-01-05 下午8.19.14.png