实现中等难度通讯录(字典,属性,…

需求:

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);//从字典中输出


























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值