OC通讯录

1、定义联系⼈人类Contact。实例变量:姓名(拼⾳音,⾸首字⺟母⼤大写)、性别、电话号码、 住址、分组名称、年龄。⽅方法:⾃自定义初始化⽅方法(姓名、电话号码)、显⽰示联系⼈人信息


2、在main.m中定义字典,分组管理所有联系⼈人。分组名为26个⼤大写的英⽂文字⺟母。


3、可以添加联系⼈人对象,如果姓名或电话号码为空,添加失败。添加联系⼈人到匹配的分 组。

4、获取某个分组名称下所有联系⼈人,并且按照姓名升序排列。


5、从通讯录中根据电话号码搜索联系⼈人。


6、获取所有⼥女性的联系⼈人。


7、根据姓名删除某个联系⼈人。

首先, 创建一个父类为NSObject的Contact类

Contact.m

- (instancetype)initWithName:(NSString *)name sex:(NSString *)sex telNumber:(NSString *)telNumber address:(NSString *)address group:(NSString *)group age:(NSInteger)age{

    if (self = [super init]) {

        self.name = name;

        self.sex = sex;

        self.telNumber = telNumber;

        self.address = address;

        self.group = group;

        self.age = age;

    }

    return self;

}

+ (instancetype)contactWithName:(NSString *)name sex:(NSString *)sex telNumber:(NSString *)telNumber address:(NSString *)address group:(NSString *)group age:(NSInteger)age{

    Contact *con = [[Contact alloc] initWithName:name sex:sex telNumber:telNumber address:address group:group age:age];

    return [con autorelease];

}


- (void)dealloc{

    [_name release];

    [_sex release];

    [_telNumber release];

    [_address release];

    [_group release];

    [super dealloc];

}

// 升序

- (NSComparisonResult * )compareX:(Contact * )contact

{

    return [self.name compare:contact.name];

}


然后,创建一个addressBook类,用于实现通讯录方法

addressBook.m

#pragma mark - 初始化字典

- (instancetype)init{

    if (self = [super init]) {

        self.dictionary = [NSMutableDictionary dictionary];

    }

    return self;

}

#pragma mark - 添加联系人

- (void)addContact:(Contact *)contact

{

    if ([contact.name isEqualToString:@""] || [contact.name isEqualToString:@""]) {

        NSLog(@"添加失败");

    }else {

        NSMutableArray *arr = [NSMutableArray array];

        arr = [self.dictionary objectForKey:contact.group];

        if (arr == nil) {

            NSMutableArray *array = [NSMutableArray array];

            [self.dictionary setObject:array forKey:contact.group];

            [array addObject:contact];

        }else{

            [arr addObject:contact];

        }

        NSLog(@"添加%@成功", contact.name);

    }

}

#pragma mark - 通过分组查找联系人

// 获取某个分组名称下所有联系人,并且按照姓名升序排列。

- (void)findGroup:(NSString *)group

{

    NSMutableArray *array = [self.dictionary objectForKey:group];

    NSArray * temp = [NSArray arrayWithArray:[array sortedArrayUsingSelector:@selector(compareX:)]];

    for (int i = 0; i < array.count - 1; i++) {

        for (int j = 0; j < array.count - 1 - i; j++) {

            NSComparisonResult res = [[[array objectAtIndex:j + 1] name] compare:[[array objectAtIndex:j] name]];

            if (NSOrderedAscending == res) {

                [array exchangeObjectAtIndex:j withObjectAtIndex:j + 1];

            }

        }

    }

    for (Contact *c  in temp) {

        NSLog(@"查看%@组的%@", c.group,c.name);

    }

}

#pragma mark - 通过号码查找联系人

- (void)findTelNumber:(NSString *)telNumber{

    NSArray *temp = [self.dictionary allValues];

    for (NSMutableArray *arr in temp) {

        for (Contact *c in arr) {

            if ([c.telNumber isEqualToString:telNumber]) {

                NSLog(@"该%@对应联系人为%@", c.telNumber, c.name);

            }

        }

    }

}

#pragma mark - 查找所有女性联系人

- (void)findWoman:(NSString *)sex{

    NSArray *temp = [self.dictionary allValues];

    for (NSMutableArray *arr in temp) {

        for (Contact *c in arr) {

            if ([c.sex isEqualToString:@"woman"]) {

                NSLog(@"女性有:%@,年龄为%ld", c.name, c.age);

            }

        }

    }

}

#pragma mark - 删除联系人

- (void)removeName:(NSString *)name{

    NSArray *temp = [self.dictionary allValues];

    for (NSMutableArray *arr in temp) {

        for (Contact *c in arr) {

            if ([c.name isEqualToString:name]) {

                NSMutableArray *array = [self.dictionary objectForKey:c.group];

                [array removeObject:c];

                [self.dictionary setValue:array forKey:c.group];

                NSLog(@"删除%@", c.name);

            }

        }

    }

}


最后,在main.m中引头文件实现通讯录即可

Contact *str1 = [Contact contactWithName:@"Zhangpeng" sex:@"man" telNumber:@"11111" address:@"NewYork" group:@"Z" age:25];

        Contact *str2 = [Contact contactWithName:@"Wuyao" sex:@"woman" telNumber:@"22222" address:@"Beijing" group:@"W" age:22];

        Contact *str3 = [Contact contactWithName:@"Zhangdi" sex:@"man" telNumber:@"33333" address:@"Dalian" group:@"Z" age:23];

        Contact *str4 = [Contact contactWithName:@"Chenpeng" sex:@"man" telNumber:@"44444" address:@"Siping" group:@"C" age:23];

        Contact *str5 = [Contact contactWithName:@"Zhaoboyu" sex:@"woman" telNumber:@"55555" address:@"Harbin" group:@"Z" age:23];

        Contact *str6 = [Contact contactWithName:@"Liujiahong" sex:@"man" telNumber:@"66666" address:@"Lvshun" group:@"L" age:24];

        addressBook *arr = [[addressBook alloc] init];

        [arr addContact:str1];

        [arr addContact:str2];

        [arr addContact:str3];

        [arr addContact:str4];

        [arr addContact:str5];

        [arr addContact:str6];

        [arr findGroup:@"Z"];

        [arr findTelNumber:@"55555"];

        [arr findWoman:@"woman"];

        [arr removeName:@"Zhaoboyu"];











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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值