OC(实现中等通讯录的操作)

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

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

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

//        

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

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

//        6、获取所有⼥女性的联系⼈人,并且按照年龄的降序排列。

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

//        8、删除某个分组的全部联系⼈人。


一:


//  main.m


#import

#import "Contact.h"

int main(int argc, const char * argv[]) {

    @autoreleasepool {

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

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

        //

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

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

        //        6、获取所有⼥女性的联系⼈人,并且按照年龄的降序排列。

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

        //        8、删除某个分组的全部联系⼈人。

        // 创建几个对象

        Contact *Curry = [[Contactalloc]initWithName:@"Curry"gender:@"m"number:@"201-5456"address:@"Jinzhou"group:@"C"age:45];

        Contact *Harden = [[Contactalloc]initWithName:@"Harden"gender:@"m"number:@"54555"address:@"Houston"group:@"H"age:78];

        Contact *James = [[Contactalloc]initWithName:@"James"gender:@"f"number:@"5455445"address:@"Kelifulan"group:@"J"age:12];

        Contact *Kobe = [[Contactalloc]initWithName:@"Kobe"gender:@"f"number:@"789456"address:@"Losangles"group:@"K"age:03];

        Contact *Wide = [[Contactalloc]initWithName:@"Wide"gender:@"f"number:@"2222366"address:@"Maiami"group:@"W"age:102];

        Contact *Tompson = [[Contactalloc]initWithName:@"Tompson"gender:@"m"number:@"789456123"address:@"Gold"group:@"T"age:56];

        Contact *WrstBrook = [[Contactalloc]initWithName:@"WrstBrook"gender:@"f"number:@"1231231123"address:@"Thander"group:@"W"age:16];

        Contact *Wiggins = [[Contactalloc]initWithName:@"Whggins"gender:@"f"number:@"4564564546"address:@"Minisoda"group:@"W"age:454];

        //定义几个可变数组

        NSMutableArray *groupC = [@[Curry]mutableCopy];

        NSMutableArray *groupH = [@[Harden]mutableCopy];

        NSMutableArray *groupJ = [@[James]mutableCopy];

        NSMutableArray *groupK = [@[Kobe]mutableCopy];

        NSMutableArray *groupW = [@[Wide, WrstBrook, Wiggins]mutableCopy];

        NSMutableArray *groupT = [@[Tompson]mutableCopy];

        

        

        //定义一个字典类

        NSMutableDictionary *allStar = [[NSMutableDictionaryalloc]initWithCapacity:0];

        //创建26个大写字母键对应的值都是空的

        for (char i = 'A'; i < 'Z'; i++) {

            NSString*key = [NSString stringWithFormat:@"%c",i];

            //创建一个空数组

            NSMutableArray *obj = [[NSMutableArrayalloc]initWithCapacity:0];

            //将26个字母键和对应的空数组添加到字典中

            [allStar setObject:obj forKey:key];

        }

        //将数组对象存储到字典中

        [allStar setObject:groupC forKey:@"C"];

        [allStar setObject:groupW forKey:@"W"];

        [allStar setObject:groupK forKey:@"K"];

        [allStar setObject:groupJ forKey:@"J"];

        [allStar setObject:groupH forKey:@"H"];

        [allStar setObject:groupT forKey:@"T"];

        //添加联系人对象

        Contact *Miller = [[Contactalloc]initWithName:@"Miller"gender:@"f"number:@"123789456"address:@"Danfu"group:@"M"age:8789];

        //得到姓名和电话

        NSString *name = [Miller name];

        NSString *number = [Miller number];

        //判断电话或者姓名是否为空

        if (!name || !number) {

            NSLog(@"添加失败");

        }else{

        //得到姓名的首字母

            NSString *firstLetter = [name substringToIndex:1];

            NSLog(@"%@", firstLetter);

        //找出首字母对应的值Value(数组)

            NSMutableArray *group = [allStar objectForKey:firstLetter];

        //将联系人对象添加到value(数组)中

            [group addObject:Miller];

            }

        NSLog(@"%@",allStar);

        

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

        //获取分组为W的所有联系人

        for (NSString *key in allStar) {

            for (Contact *contact in allStar[key]) {

                if ([contact.group isEqualToString:@"W"]) {

                    NSLog(@"%@", contact);

                                    }

            }

       }

        

        //按照姓名排序

        [groupW sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {

            NSComparisonResult result = [[obj1 name] compare:[obj2 name]];

            return result;

                    }];

        NSLog(@"%@",groupW);

        

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

        NSLog(@"~~~~~~~~~~~号码为123789456的联系人~~~~~~~~~~" );

        for (NSString *key in allStar) {

            for (Contact *contact in allStar[key]) {

                if ([contact.number isEqualToString:@"123789456"]) {

                    NSLog(@"%@", contact);

                }

            }

        }

        // 获取所有⼥女性的联系⼈人,并且按照年龄的降序排列。

        NSLog(@"~~**********所有按照年龄降序女性联系人************~~~");

        for (NSString *key in allStar) {

            for (Contact *contact in allStar[key]) {

                if ([contact.gender isEqualToString:@"f"]) {

                  

                    

                    NSMutableArray *groupSexF = [@[contact]mutableCopy];

                    [groupSexF sortUsingComparator:^NSComparisonResult(id obj1, idobj2) {

                        NSComparisonResult result =  -[@([obj1 age]) compare: @([obj2age])];

                        return result;

                    }];

                    

                NSLog(@"%@", contact);

                }

                

            }

        }

       

        

        

        

        

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

        NSLog(@"~~~~~~~~删除姓名为Kobe的联系人~~~~~~~~~");

        for (char i = 'A'; i < 'Z'; i++) {

            NSString *key = [NSString stringWithFormat:@"%c", i];

            NSMutableArray *tempArray = allStar[key];

            for (NSInteger j = 0; j < [allStar[key] count]; j++) {

                Contact *tempContact = tempArray[j];

                if ([tempContact.name isEqualToString:@"Kobe"]) {

                    [tempArray removeObject:tempContact];

                    j--;

                }

                          }

        }

        NSLog(@"%@",allStar);

        

         //删除某个分组的全部联系⼈人。

              NSLog(@"~~~~~~~删除分组为w的所有联系人~~~~~~~");

        //w对应的value即分组为w的联系人存入一个可变数组

        NSMutableArray *group1 = [allStar objectForKey:@"W"];

        //清空数组

       [group1 removeAllObjects];

       NSLog(@"%@",allStar);

   }

    return 0;

}


   二:



//  Contact.h


#import

@interface Contact : NSObject

@property NSString *name, *gender, *number, *address, *group;

@propertyNSInteger age;

- (id)initWithName:(NSString *)name gender:(NSString *)gender number:(NSString *)number address:(NSString *)address group:(NSString *)group

               age:(NSInteger)age;

@end

三:



//  Contact.m


#import "Contact.h"

@implementation Contact

@synthesize name = _name,gender =_gender, number = _number, address =_address, group = _group, age = _age;

- (id)initWithName:(NSString *)name gender:(NSString *)gender number:(NSString *)number address:(NSString *)address group:(NSString *)group age:(NSInteger)age{

    if (self = [super init]) {

        _name = name;

        _gender = gender;

        _number = number;

        _address = address;

        _group  = group;

        _age = age;

        

    }returnself;

}

- (NSString *)description

{

    return [NSStringstringWithFormat:@"name:%@, gender:%@, number:%@, address:%@, group:%@, age:%lu", _name, _gender, _number, _address, _group,_age];

}

@end


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值