iOS简单通讯录


//
//  Contact.h
//  contactDemo
//
//  Created by laouhn on 15/10/26.
//  Copyright (c) 2015年 laouhn. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Contact : NSObject


//姓名
@property (nonatomic,retain)NSString *name;
//性别
@property (nonatomic,retain)NSString *gender;
//年龄
@property (nonatomic,assign)NSInteger age;
//电话号码
@property (nonatomic,retain)NSString *phonenumber;

//住址
@property (nonatomic,retain)NSString *address;

//分组名称
@property (nonatomic,retain)NSString * groupName;


//初始化方法
- (id)initWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age phonenumber:(NSString *)phonenumber adderss:(NSString *)adderss groupName:(NSString *)groupName;

//便利构造器
+(id)contactWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age phonenumber:(NSString *)phonenumber adderss:(NSString *)adderss groupName:(NSString *)groupName;

@end






//
//  Contact.m
//  contactDemo
//
//  Created by laouhn on 15/10/26.
//  Copyright (c) 2015年 laouhn. All rights reserved.
//

#import "Contact.h"

@implementation Contact
- (id)initWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age phonenumber:(NSString *)phonenumber adderss:(NSString *)adderss groupName:(NSString *)groupName{
   self = [super init];
   if (self) {
        _name =name;
        _gender = gender;
        _age = age;
        _phonenumber =phonenumber;
        _address =adderss;
        _groupName= groupName;
    }
    return self;
}

//便利构造器
+(id)contactWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger)age phonenumber:(NSString *)phonenumber adderss:(NSString *)adderss groupName:(NSString *)groupName{
    Contact *con = [[Contact  alloc] initWithName:name gender:gender age:age phonenumber:phonenumber adderss:adderss groupName:groupName];
   return con;
}

- (NSString *)description{
   return [NSString stringWithFormat:@"%@,%@,%@",_name,_gender,_groupName];
}




@end


//
//  ContactManager.h
//  contactDemo
//
//  Created by laouhn on 15/10/26.
//  Copyright (c) 2015年 laouhn. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Contact.h"
// 这是一个联系人管理类,主要用于联系人的增,删,改,查的操作
@interface ContactManager : NSObject


@property (nonatomic,retain) NSMutableDictionary *contactDic;//字典,用来储存联系人的


//重写初始化方法,目的是给字典开辟空间

-(instancetype)init;


//身为助手类,就要有助手的功能(方法,接口)增,删,改,查等等的操作,就应该助手来完成。


//系统添加联系人的功能(接口)
- (void)addContact:(Contact *)contact;

//获取某个分组下的所有联系人(按姓名升序)
-(NSMutableArray *)getContactForGroupName:(NSString *)groupName;


//根据电话号码,搜索某人
- (Contact *)getContactForPhoneNumber:(NSString *)phoneNumber;


//根据性别搜索联系人,按年龄降序
- (NSMutableArray *)getContactForGender:(NSString *)gender;

//根据姓名删除联系人
-(void)removeContactForName:(NSString *)name;


//删除指定分组联系人
- (void)removeContactsForGroupName:(NSString *)groupName;

//显示所有人的信息
-(void)displayAllContactsTnfo;






@end

//
//  ContactManager.m
//  contactDemo
//
//  Created by laouhn on 15/10/26.
//  Copyright (c) 2015年 laouhn. All rights reserved.
//

#import "ContactManager.h"

@implementation ContactManager

-(instancetype)init{
   self = [super init];
   if (self) {
        //给字典开辟空间
        _contactDic = [NSMutableDictionary dictionaryWithCapacity:1];
    }
    return self;
}



//系统添加联系人的功能(接口)
- (void)addContact:(Contact *)contact{
    //1.判断,当联系人姓名,或者电话为空,不添加
    NSString *name =contact.name;
    NSString *phoneNumber = contact.phonenumber;
   if ([name isEqualToString:@""]||[phoneNumber isEqualToString:@""]||name ==nil||phoneNumber == nil) {
        NSLog(@"亲,添加失败!");
       return;
    }
    //2.当联系人姓名,电话不为空时,执行添加操作
    //获取联系人所在的分组
    NSString *group = contact.groupName;
    //(2)根据分组名从字典中查找对应的分组(联系人数组)
    NSMutableArray *contactArray =[_contactDic objectForKey:group];
    //判断对应的联系人数组是否为空
   if (contactArray ==nil) {
        //如果为空,代表之前没有这个分组,字典中也没就没有这样的键值对
        //因此,(1)创建可变数组
        contactArray = [NSMutableArray arrayWithCapacity:1];
        //数组创建完毕,将联系人添加到数组中
        [contactArray addObject:contact];
        //(2)将键值对添加到字典中
        [_contactDic setObject:contactArray forKey:group];
    }else{
   //否则else:代表该数组已经创建过了,字典中存在这样的数组,只需把联系人添加到这个数组即可
        [contactArray addObject:contact];
    }
}


//获取某个分组下的所有联系人(按姓名升序)
-(NSMutableArray *)getContactForGroupName:(NSString *)groupName{
    //(1)获取对应分组下联系人数组
    NSMutableArray *contactArray = [_contactDic objectForKey:groupName];
    //(2)按姓名升序
    [contactArray sortUsingComparator:^NSComparisonResult(id obj1,id obj2) {
        Contact *contact1 = (Contact *)obj1;
        Contact *contact2 = (Contact *)obj2;
       return [contact1.name compare:contact2.name];
    }];
   return contactArray;
}


//根据电话号码,搜索某人
- (Contact *)getContactForPhoneNumber:(NSString *)phoneNumber{
    //(1)遍历字典
   for (NSString *keyin _contactDic) {
        //通过key获取value对象
        NSMutableArray *contactArray = [_contactDic objectForKey:key];
       //遍历数组
       for (Contact *contactin contactArray) {
            //比对遍历到的联系人的电话号码是否与参数(输入电话号码)是否相同
           if ([contact.phonenumber isEqualToString:phoneNumber]) {
               //意味着为真,找到这个联系人了
               return contact;
            }
        }
    }
    return nil;
    }








//根据性别搜索联系人,按年龄降序
- (NSMutableArray *)getContactForGender:(NSString *)gender{
//    1.创建数组,储存符合性别的所有联系人
    NSMutableArray *genderArray = [NSMutableArray arrayWithCapacity:1];
    //2.遍历字典,查找符合的联系人
   for (NSString *keyin _contactDic) {
        //根据key获取value
        NSMutableArray *conractArray = [_contactDic objectForKey:key];
       for (Contact *contactin conractArray) {
           if ([contact.gender isEqualToString:gender]) {
                //如果相符,把该联系人添加到genderArray中
                [genderArray addObject:contact];
            }
        }
    }
    //按年龄降序排序
    [genderArray sortedArrayUsingComparator:^NSComparisonResult(id obj1,id obj2) {
        Contact *contact1 = (Contact *)obj1;
        Contact *contact2 = (Contact *)obj2;
//        if (contact1.age < contact2.age) {
//            return NSOrderedDescending;//1
//        }else if{
//            return NSOrderedAscending;//-1
//        }else {
//            return NSOrderedSame;//0
//        }
       return [@(contact1.age) compare:@(contact2.age)];
    }];
   return genderArray;
}

//根据姓名删除联系人
-(void)removeContactForName:(NSString *)name{
    NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:1];
   for (NSString *keyin _contactDic) {
        NSMutableArray *contactArray = [_contactDic objectForKey:key];
       //制作副本
        tempArray = [NSMutableArray arrayWithArray:contactArray];
       //遍历副本
       for (Contact *contactin contactArray) {
           //根据姓名查找
           if ([contact.name isEqualToString:name]) {
                //代码行到此处证明找到这个联系人了,因此遍历的是副本,因此可以在原数组中删除
                [contactArray removeObject:contact];
            }
        }
    }
}


//删除指定分组联系人
- (void)removeContactsForGroupName:(NSString *)groupName{
    [_contactDic removeObjectForKey:groupName];
}

//显示所有人的信息
-(void)displayAllContactsTnfo{
  //遍历字典
   for (NSString *keyin _contactDic) {
        //根据key获取相应的value
        NSMutableArray *contactArray = [_contactDic objectForKey:key];
        //遍历联系人所有信息
       for (Contact *contactin contactArray) {
           //输出联系人所有的信息
            NSLog(@"%@,%@,%ld,%@",contact.name,contact.gender,contact.age,contact.address);
        }
    }
}









@end

//
//  main.m
//  contactDemo
//
//  Created by laouhn on 15/10/26.
//  Copyright (c) 2015年 laouhn. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Contact.h"
#import "ContactManager.h"
int main(int argc,constchar * argv[]) {


//******************************通讯录*******************************



    //创建联系人对象
    Contact *contact1 = [Contact contactWithName:@"mayun" gender:@"man" age:48 phonenumber:@"34354546" adderss:@"hanzhou" groupName:@"M"];

    Contact *contact2 = [Contact contactWithName:@"mahuateng" gender:@"man" age:40 phonenumber:@"348586" adderss:@"shenzheng" groupName:@"M"];

    Contact *contact3 = [Contact contactWithName:@"renzhengfei" gender:@"man" age:58 phonenumber:@"0797866" adderss:@"shenzheng" groupName:@"R"];

    Contact *contact4 = [Contact contactWithName:@"dongmingzhu" gender:@"woman" age:79 phonenumber:@"6889543" adderss:@"zhuhai" groupName:@"D"];
    Contact *contact5 = [Contact contactWithName:@"leijun" gender:@"man" age:70 phonenumber:@"0865" adderss:@"beijing" groupName:@"L"];


    //创建助手(联系人管理类)对象
    ContactManager *contactManager = [[ContactManager alloc ]init];

    //添加联系人
     [contactManager addContact:contact1];
     [contactManager addContact:contact2];
     [contactManager addContact:contact3];
     [contactManager addContact:contact4];
     [contactManager addContact:contact5];

 //显示联系人
//    [contactManager displayAllContactsTnfo];
//     
//    
//    //获取某个分组的全部联系人
//    NSArray *groupContact = [contactManager getContactForGroupName:@"M"];
//    
//    
//    
    //根据电话号码搜索某人
    Contact *contact  = [contactManager getContactForPhoneNumber:@"6889543" ];
    NSLog(@"%@",contact);

    //根据性别获取联系人
     NSMutableArray *array = [contactManager getContactForGender:@"man"];
    NSLog(@"%@", array);

//    //根据姓名删除联系人
//    [contactManager removeContactForName:@"leijun"];
//    
//    
//    
//    //删除某个分组联系人
//    [contactManager removeContactsForGroupName:@"M"];
//    [contactManager displayAllContactsTnfo];
//    




   return0;
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值