// 1、定义联系⼈人类Contact。实例变量:姓名(拼⾳音,⾸首字⺟母⼤大写)、性别、电话号码、住址、分组名称、年龄。⽅方法:⾃自定义初始化⽅方法(姓名、电话号码)、显⽰示联系⼈人信息
// 2、在main.m中定义字典,分组管理所有联系⼈人。分组名为26个⼤大写的英⽂文字⺟母。
// 3、可以添加联系⼈人对象,如果姓名或电话号码为空,添加失败。添加联系⼈人到匹配的分组。
//
// 4、获取某个分组名称下所有联系⼈人,并且按照姓名升序排列。
// 5、从通讯录中根据电话号码搜索联系⼈人。
// 6、获取所有⼥女性的联系⼈人,并且按照年龄的降序排列。
// 7、根据姓名删除某个联系⼈人。
// 8、删除某个分组的全部联系⼈人。
一:
// main.m
#import
#import "Contact.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// // 2、在main.m中定义字典,分组管理所有联系⼈人。分组名为26个⼤大写的英⽂文字⺟母。
// 3、可以添加联系⼈人对象,如果姓名或电话号码为空,添加失败。添加联系⼈人到匹配的分组。
//
// 4、获取某个分组名称下所有联系⼈人,并且按照姓名升序排列。
// 5、从通讯录中根据电话号码搜索联系⼈人。
// 6、获取所有⼥女性的联系⼈人,并且按照年龄的降序排列。
// 7、根据姓名删除某个联系⼈人。
// 8、删除某个分组的全部联系⼈人。
// 创建几个对象
Contact *Curry = [[Contactalloc]initWithName:@"Curry"gender:@"m"number:@"201-5456"address:@"Jinzhou"group:@"C"age:45];
Contact *Harden = [[Contactalloc]initWithName:@"Harden"gender:@"m"number:@"54555"address:@"Houston"group:@"H"age:78];
Contact *James = [[Contactalloc]initWithName:@"James"gender:@"f"number:@"5455445"address:@"Kelifulan"group:@"J"age:12];
Contact *Kobe = [[Contactalloc]initWithName:@"Kobe"gender:@"f"number:@"789456"address:@"Losangles"group:@"K"age:03];
Contact *Wide = [[Contactalloc]initWithName:@"Wide"gender:@"f"number:@"2222366"address:@"Maiami"group:@"W"age:102];
Contact *Tompson = [[Contactalloc]initWithName:@"Tompson"gender:@"m"number:@"789456123"address:@"Gold"group:@"T"age:56];
Contact *WrstBrook = [[Contactalloc]initWithName:@"WrstBrook"gender:@"f"number:@"1231231123"address:@"Thander"group:@"W"age:16];
Contact *Wiggins = [[Contactalloc]initWithName:@"Whggins"gender:@"f"number:@"4564564546"address:@"Minisoda"group:@"W"age:454];
//定义几个可变数组
NSMutableArray *groupC = [@[Curry]mutableCopy];
NSMutableArray *groupH = [@[Harden]mutableCopy];
NSMutableArray *groupJ = [@[James]mutableCopy];
NSMutableArray *groupK = [@[Kobe]mutableCopy];
NSMutableArray *groupW = [@[Wide, WrstBrook, Wiggins]mutableCopy];
NSMutableArray *groupT = [@[Tompson]mutableCopy];
//定义一个字典类
NSMutableDictionary *allStar = [[NSMutableDictionaryalloc]initWithCapacity:0];
//创建26个大写字母键对应的值都是空的
for (char i = 'A'; i < 'Z'; i++) {
NSString*key = [NSString stringWithFormat:@"%c",i];
//创建一个空数组
NSMutableArray *obj = [[NSMutableArrayalloc]initWithCapacity:0];
//将26个字母键和对应的空数组添加到字典中
[allStar setObject:obj forKey:key];
}
//将数组对象存储到字典中
[allStar setObject:groupC forKey:@"C"];
[allStar setObject:groupW forKey:@"W"];
[allStar setObject:groupK forKey:@"K"];
[allStar setObject:groupJ forKey:@"J"];
[allStar setObject:groupH forKey:@"H"];
[allStar setObject:groupT forKey:@"T"];
//添加联系人对象
Contact *Miller = [[Contactalloc]initWithName:@"Miller"gender:@"f"number:@"123789456"address:@"Danfu"group:@"M"age:8789];
//得到姓名和电话
NSString *name = [Miller name];
NSString *number = [Miller number];
//判断电话或者姓名是否为空
if (!name || !number) {
NSLog(@"添加失败");
}else{
//得到姓名的首字母
NSString *firstLetter = [name substringToIndex:1];
NSLog(@"%@", firstLetter);
//找出首字母对应的值Value(数组)
NSMutableArray *group = [allStar objectForKey:firstLetter];
//将联系人对象添加到value(数组)中
[group addObject:Miller];
}
NSLog(@"%@",allStar);
//获取某个分组名称下所有联系⼈人,并且按照姓名升序排列。
//获取分组为W的所有联系人
for (NSString *key in allStar) {
for (Contact *contact in allStar[key]) {
if ([contact.group isEqualToString:@"W"]) {
NSLog(@"%@", contact);
}
}
}
//按照姓名排序
[groupW sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSComparisonResult result = [[obj1 name] compare:[obj2 name]];
return result;
}];
NSLog(@"%@",groupW);
//从通讯录中根据电话号码搜索联系⼈。
NSLog(@"~~~~~~~~~~~号码为123789456的联系人~~~~~~~~~~" );
for (NSString *key in allStar) {
for (Contact *contact in allStar[key]) {
if ([contact.number isEqualToString:@"123789456"]) {
NSLog(@"%@", contact);
}
}
}
// 获取所有⼥女性的联系⼈人,并且按照年龄的降序排列。
NSLog(@"~~**********所有按照年龄降序女性联系人************~~~");
for (NSString *key in allStar) {
for (Contact *contact in allStar[key]) {
if ([contact.gender isEqualToString:@"f"]) {
NSMutableArray *groupSexF = [@[contact]mutableCopy];
[groupSexF sortUsingComparator:^NSComparisonResult(id obj1, idobj2) {
NSComparisonResult result = -[@([obj1 age]) compare: @([obj2age])];
return result;
}];
NSLog(@"%@", contact);
}
}
}
//根据姓名删除某个联系⼈人。
NSLog(@"~~~~~~~~删除姓名为Kobe的联系人~~~~~~~~~");
for (char i = 'A'; i < 'Z'; i++) {
NSString *key = [NSString stringWithFormat:@"%c", i];
NSMutableArray *tempArray = allStar[key];
for (NSInteger j = 0; j < [allStar[key] count]; j++) {
Contact *tempContact = tempArray[j];
if ([tempContact.name isEqualToString:@"Kobe"]) {
[tempArray removeObject:tempContact];
j--;
}
}
}
NSLog(@"%@",allStar);
//删除某个分组的全部联系⼈人。
NSLog(@"~~~~~~~删除分组为w的所有联系人~~~~~~~");
//w对应的value即分组为w的联系人存入一个可变数组
NSMutableArray *group1 = [allStar objectForKey:@"W"];
//清空数组
[group1 removeAllObjects];
NSLog(@"%@",allStar);
}
return 0;
}
二:
// Contact.h
#import
@interface Contact : NSObject
@property NSString *name, *gender, *number, *address, *group;
@propertyNSInteger age;
- (id)initWithName:(NSString *)name gender:(NSString *)gender number:(NSString *)number address:(NSString *)address group:(NSString *)group
age:(NSInteger)age;
@end
三:
// Contact.m
#import "Contact.h"
@implementation Contact
@synthesize name = _name,gender =_gender, number = _number, address =_address, group = _group, age = _age;
- (id)initWithName:(NSString *)name gender:(NSString *)gender number:(NSString *)number address:(NSString *)address group:(NSString *)group age:(NSInteger)age{
if (self = [super init]) {
_name = name;
_gender = gender;
_number = number;
_address = address;
_group = group;
_age = age;
}returnself;
}
- (NSString *)description
{
return [NSStringstringWithFormat:@"name:%@, gender:%@, number:%@, address:%@, group:%@, age:%lu", _name, _gender, _number, _address, _group,_age];
}
@end