需求:
1、定义联系⼈类 AddressContact。
实例变量:姓名(拼⾳,⾸字⺟大写)、性别、电话号码、住址、分组名称、年龄。
方法:⾃定义初始化方法(姓名、电话号码)、显示联系⼈信息。
2、在main.m中定义字典,分组管理所有联系人。分组名为26个⼤写的英⽂字⺟。
3、可以添加联系人对象,如果姓名或电话号码为空,添加失败。添加联系⼈到匹配的分组。
4、获取某个分组名称下所有联系⼈,并且按照姓名升序排列。
5、从通讯录中根据电话号码搜索联系人。
6、获取所有女性的联系人,并且按照年龄的降序排列。
7、根据姓名删除某个联系人。
8、删除某个分组的全部联系人。
// AddressContact.h
@interface AddressContact : NSObject
{
NSString*_name;
NSString*_gender;
NSString*_number;
NSString*_address;
NSString*_groupName;
NSInteger _age;
}
//属性
@property (nonatomic,retain)NSString*name;
@property (nonatomic,retain)NSString*gender;
@property (nonatomic,retain)NSString*number;
@property (nonatomic,retain)NSString*address;
@property (nonatomic,retain)NSString*groupName;
@property (nonatomic)NSInteger age;
//初始化
-(id)initWithName:(NSString*)name
Gender:(NSString*)gender
Number:(NSString*)number
Address:(NSString*)address
GroupName:(NSString*)groupName
Age:(NSInteger)age;
+(id)addresscontactWithName:(NSString*)name
Gender:(NSString*)gender
Number:(NSString*)number
Address:(NSString*)address
GroupName:(NSString*)groupName
Age:(NSInteger)age;
//按姓名排序
-(NSComparisonResult)sortByName:(AddressContact*)aContact;
//按年龄排序
-(NSComparisonResult)sortByAge:(AddressContact*)aContact;
-(NSString *)description;
@end
// AddressContact.m
@implementation AddressContact
@synthesize name=_name;
@synthesize gender=_gender;
@synthesize number=_number;
@synthesize address=_address;
@synthesize groupName=_groupName;
@synthesize age=_age;
//初始化
-(id)initWithName:(NSString*)name
Gender:(NSString*)gender
Number:(NSString*)number
Address:(NSString*)address
GroupName:(NSString*)groupName
Age:(NSInteger)age{
self=[super init];
if (self) {
_name=[name retain];
_gender=[gender retain];
_number=[number retain];
_address=[address retain];
_groupName=[groupName retain];
_age=age;
}
return self;
}
-(void)dealloc{
[_name release];
[_gender release];
[_address release];
[_groupName release];
[_number release];
[super dealloc];
}
+(id)addresscontactWithName:(NSString*)name
Gender:(NSString*)gender
Number:(NSString*)number
Address:(NSString*)address
GroupName:(NSString*)groupName
Age:(NSInteger)age{
AddressContact *add=[[AddressContact alloc]initWithName:name Gender:gender Number:number Address:address GroupName:groupName Age:age];
return [add autorelease] ;
}
//按姓名排序
-(NSComparisonResult)sortByName:(AddressContact*)aContact{
return [_name compare:[aContact name]];
}
//按年龄排序
-(NSComparisonResult)sortByAge:(AddressContact*)aContact{
if (_age<[aContact age]) {
return NSOrderedDescending;
}else if(_age==[aContact age]){
return NSOrderedSame;
}else{
return NSOrderedAscending;
}
}
-(NSString *)description{
return [NSString stringWithFormat:@"%@,%@,%@,%@,%@,%ld",_name,_gender,_number,_address,
_groupName,_age];
}
@end
// main.m
// 创建实例对象
AddressContact *p1=[[AddressContact alloc]initWithName:@"Anni" Gender:@"m" Number:@"002" Address:@"shanghai" GroupName:@"A" Age:18];
AddressContact *p1_2=[[AddressContact alloc]initWithName:@"Andongni" Gender:@"f" Number:@"005" Address:@"zhengzhou" GroupName:@"A" Age:23];
AddressContact *p2=[[AddressContact alloc]initWithName:@"Bobi" Gender:@"m" Number:@"001" Address:@"guangzhou" GroupName:@"B" Age:19];
AddressContact *p3=[[AddressContact alloc]initWithName:@"Cady" Gender:@"f" Number:@"009" Address:@"xian" GroupName:@"C" Age:20];
AddressContact *p4 = [[AddressContact alloc]initWithName:@"Davi" Gender:@"f" Number:@"002" Address:@"zhoukou" GroupName:@"D" Age:18];
// 1,将同一分组的人添加到一个数组中
//添加组名为A的数据到数组groupA
NSMutableArray *groupA=[NSMutableArray array];
[groupA addObject:p1];
[groupA addObject:p1_2];
//添加组名为B的数据到数组groupB
NSMutableArray *groupB=[NSMutableArray array];
[groupB addObject:p2];
//添加组名为C的数据到数组groupC
NSMutableArray *groupC=[NSMutableArray array];
[groupC addObject:p3];
//添加组名为D的数据到数组groupD
NSMutableArray *groupD=[NSMutableArray array];
[groupD addObject:p4];
// 2,将每个数组中的值作为Value ,分组名groupN 作为Key值,存入字典中。
NSMutableDictionary *contactDict=[NSMutableDictionary dictionary];
[contactDict setObject:groupA forKey:@"A"];//与下一句一样
[contactDict setObject:groupA forKey:p1.groupName];
[contactDict setObject:groupB forKey:p2.groupName];
[contactDict setObject:groupC forKey:p3.groupName];
[contactDict setObject:groupD forKey:p4.groupName];
NSLog(@"%@",contactDict);//从字典中输出