通讯录的创建以及实现

先建立AddressContact类,在AddressContact类的.h文件中,写如下代码:
@interface AddressContact : NSObject
{
    NSString *_name;//姓名
    NSString *_gender;//性别
    NSInteger _age;//年龄
    NSString * _number;//电话号码
    NSString *_address;//地址
    NSString *_namePacket;//分组名称
}
//自定义初始化方法
- (id) initWithName:(NSString *)name gender:(NSString *)gender  age:(NSInteger)age number:(NSString *)number address:(NSString *)address namePacket:(NSString *)namePacket;
//setter
- (void)setName:(NSString *)name;
- (void)setGender:(NSString *)gender;
- (void)setAge:(NSInteger)age;
- (void)setNumber:(NSString *)number;
- (void)setAddress:(NSString *)address;
- (void)setNamePacket:(NSString *)namePacket;
//getter
- (NSString *)name;
- (NSString *)gender;
- (NSInteger)age;
- (NSString *)number;
- (NSString *)address;
- (NSString *)namePacket;
//重写从父类继承过来的description方法(显示联系人信息)
- (NSString *)description;
//按姓名升序排序
- (NSComparisonResult)sortName:(AddressContact *)aName;
//按年龄降序排序
- (NSComparisonResult)sortAge:(AddressContact *)aAge;
@end

在AddressContact类的.m文件中写如下代码:

@implementation AddressContact
//自定义初始化方法
- (id) initWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age number:(NSString *)number address:(NSString *)address namePacket:(NSString *)namePacket
{
    self = [super init];
    if (self != nil) {
        _name = name;
        _gender = gender;
        _age = age;
        _number = number;
        _address = address;
        _namePacket = namePacket;
    }
    return self;
}
//setter
- (void)setName:(NSString *)name
{
    _name = name;
}
- (void)setGender:(NSString *)gender
{
    _gender = gender;
}
- (void)setAge:(NSInteger)age
{
    _age = age;
}
- (void)setNumber:(NSString *)number
{
    _number = number;
}
- (void)setAddress:(NSString *)address
{
    _address = address;
}
- (void)setNamePacket:(NSString *)namePacket
{
    _namePacket = namePacket;
}
//getter
- (NSString *)name
{
    return _name;
}
- (NSString *)gender
{
    return _gender;
}
- (NSInteger)age
{
    return _age;
}
- (NSString *)number
{
    return  _number;
}
- (NSString *)address
{
    return  _address;
}
- (NSString *)namePacket
{
    return _namePacket;
}
//重写从父类继承过来的description方法(显示联系人信息)
- (NSString *)description
{
    return [NSString stringWithFormat:@"%@   %@   %ld   %@   %@   %@ ",_name,_gender,_age,_number,_address,_namePacket];
}
//按姓名升序排序
- (NSComparisonResult)sortName:(AddressContact *)aName
{
    return [[self name] compare:[aName name]];
}
//按年龄降序排序
- (NSComparisonResult)sortAge:(AddressContact *)aAge
{
    if ([self age] > [aAge age]) {
        return NSOrderedAscending;
    }else if ([self age] == [aAge age]){
        return NSOrderedSame;
    }else{
        return NSOrderedDescending;
    }
    
}
@end
在main.m的文件中创建对象,并写如下代码:

        //创建对象
        AddressContact *person1 = [[AddressContact alloc] initWithName:@"Xiaoxiao" gender:@"m" age:21 number:@"18536968954" address:@"河南郑州" namePacket:@"X"];
        AddressContact *person2 = [[AddressContact alloc] initWithName:@"Daxiao" gender:@"m" age:29 number:@"18536969954" address:@"河南郑州" namePacket:@"D"];
        AddressContact *person3 = [[AddressContact alloc] initWithName:@"Wangda" gender:@"f" age:23 number:@"18536964554" address:@"北京市" namePacket:@"W"];
        AddressContact *person4 = [[AddressContact alloc] initWithName:@"Xiaoyu" gender:@"f" age:12 number:@"18126968954" address:@"河南郑州" namePacket:@"X"];
        AddressContact *person5 = [[AddressContact alloc] initWithName:@"Wanyu" gender:@"m" age:32 number:@"18536961234" address:@"上海市" namePacket:@"W"];
        AddressContact *person6 = [[AddressContact alloc] initWithName:@"Dangho" gender:@"f" age:16 number:@"18536968954" address:@"河南郑州" namePacket:@"D"];
        AddressContact *person7 = [[AddressContact alloc] initWithName:@"Aunho" gender:@"f" age:24 number:@"18512968954" address:@"河南" namePacket:@"A"];
        AddressContact *person8 = [[AddressContact alloc] initWithName:@"Wangxiao" gender:@"m" age:36 number:@"18536965436" address:@"郑州" namePacket:@"W"];
        AddressContact *person9 = [[AddressContact alloc] initWithName:@"Aoxiao" gender:@"m" age:23 number:@"23536968954" address:@"河南郑州" namePacket:@"A"];
        AddressContact *person10 = [[AddressContact alloc] initWithName:@"Aanda" gender:@"f" age:25 number:@"18565768954" address:@"河南郑州" namePacket:@"A"];
        NSMutableArray *arr1 = [NSMutableArray arrayWithObjects:person1,person4, nil];
        NSMutableArray *arr2 = [NSMutableArray arrayWithObjects:person2,person6, nil];
        NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:person3,person5,person8, nil];
        NSMutableArray *arr4 = [NSMutableArray arrayWithObjects:person7,person9,person10, nil];
        NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:arr1,@"X",arr2,@"D",arr3,@"W",arr4,@"A", nil];
        
//添加联系人
        AddressContact *person11 = [[AddressContact alloc] initWithName:@"Bada" gender:@"f" age:39 number:@"18565766544" address:@"河南郑州" namePacket:@"A"];
        NSMutableArray *Arr = [[NSMutableArray alloc] init];
        if ([[person11 name] isEqualToString:@"" ]||[[person11 number] isEqualToString:@""] ) {
            NSLog(@"添加失败");
        }else{
            NSString *str = [[person11 name] substringWithRange:NSMakeRange(0, 1)];//获取联系人姓名首字母
      for (NSString *key in dic) {
            if ([key isEqualToString:str]) {
                [[dic objectForKey:key] addObject:person11];
            }else{
                [Arr addObject:person11];
            }
        }
            for (int i = 0; i < [Arr count] + 1; i++) {
                [Arr removeObjectAtIndex:0];
            }
            [dic setObject:Arr forKey:str];
            NSLog(@"添加成功");
        }
            
            
     //   NSLog(@"%@ ",dic);
//获取某个分组名称下的所有联系人,并按姓名升序排序
        char str1[20] = {0};
        NSLog(@"请输入分组的名称:");
        scanf("%s",str1);
        NSString *str2 = [NSString stringWithUTF8String:str1];//将字符串转换为OC中字符串
        for ( NSString *key1 in dic) {
            if ([key1 isEqualToString:str2]) {
               NSMutableArray *  arr = [dic objectForKey:key1];
                [arr sortUsingSelector:@selector(sortName:)];//按姓名升序排序
                NSLog(@"%@",arr);
                           }
                    }
      
        //  NSLog(@"%@ ",dic);
//从通讯录中根据电话号码搜索联系人
        char str3[20] = {0};
        NSLog(@"请输入电话号码:");
        scanf("%s",str3);
        NSString *str4 = [NSString stringWithUTF8String:str3];//将字符串转换为OC中字符串
        for ( NSString *key2 in dic) {
            for ( AddressContact *str5 in [dic objectForKey:key2]) {
            if ([[str5 number] isEqualToString:str4]) {//两层forin,判断电话号码是否相等
                NSLog(@"%@ ",str5  );
            }
            }
        }
          //NSLog(@"%@ ",dic);
//获取所有女性的联系人,并按年龄降序排序
        char str6[20] = {0};
        NSLog(@"请输入获取联系人的性别(男m,女f):");
        scanf("%s",str6);
        NSString *str7 = [NSString stringWithUTF8String:str6];//将字符串转换为OC中字符串
        NSMutableArray *arr = [[NSMutableArray alloc] init];
        for ( NSString *key3 in dic) {
            for ( AddressContact *str8 in [dic objectForKey:key3]) {
                if ([[str8 gender] isEqualToString:str7]) {
                    [arr addObject:str8];//将取出的信息存入一个数组中
                }
            }
        }
        [arr sortUsingSelector:@selector(sortAge:)];//按年龄降序排序
        NSLog(@"%@",arr);     
        //NSLog(@"%@ ",dic);
//根据姓名删除联系人
        char str9[20] = {0};
        NSLog(@"请输入要删除的联系人的姓名:");
        scanf("%s",str9);
        NSString *str10 = [NSString stringWithUTF8String:str9];//将字符串转换为OC中字符串
       NSString *str11 =[str10  substringWithRange:NSMakeRange(0,1)];
        NSMutableArray *arr6 = [dic objectForKey:str11];//获取数组
            for (int j = 0; j <[arr6 count] ;) {
                AddressContact *a =[arr6 objectAtIndex:j];//获取所得数组中的对象
                if ([[a name] isEqualToString:str10]) {
                    [arr6 removeObject:a];
                    <span style="font-family: Arial, Helvetica, sans-serif;"> NSLog(@"删除成功");  </span>
                }else{
                    j ++;
                }
        }
        //NSLog(@"%@ ",dic);
//删除某个分组的全部联系人
        char str12[20] = {0};
        NSLog(@"请输入要删除的分组:");
        scanf("%s",str12);
        NSString *str13 = [NSString stringWithUTF8String:str12];//将字符串转换为OC中字符串
        [dic removeObjectForKey:str13]; //删除分组
        NSLog(@"删除成功");   
          NSLog(@"所有联系人信息为: ");
        for (NSString *b in dic) {
            for (AddressContact *c in [dic objectForKey:b]) {//输出所有人信息
                NSLog(@"%@ ",c);
            }
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值