OC:通讯录实战

实战(使用OC的知识制作一个简易通讯录)

 

//语法糖、笑笑语法
//        NSString * string = [NSString stringWithFormat:@"string"];
        NSString * str = @"string";
        NSLog(@"%@",str);
        //上面的两种写法是一样的,是字符串的简单写法
//        NSArray * arr = [NSArray arrayWithObjects:@"yuansu",@"yuansu2", nil];
        NSArray * arr1 = @[@"1",@"2"];
//        NSLog(@"%@",dic);
        NSDictionary * dic1 =@{@"key0":@"value0",@"key1":@"value1",@"key2":@"value2"};
        //笑笑语法创建的集合都是不可变的对象
        //不可变转变为可变
        NSMutableDictionary * dic = [dic1 mutableCopy];
        NSMutableArray * arr = [arr1 mutableCopy];
        NSMutableString * strr = [str mutableCopy];
        NSLog(@"%@ %@ %@",dic,arr,strr);
笑笑语法
       下面写法都是一样的代表判断为空
        if (str == nil) {
            <#statements#>
        }
        if (!str) {
            <#statements#>
        }
       */
       
        
        
       /*
        array1 == nil; 数组的对象的空间没有开辟 没有这个对象
        [array count] == 0; 数组对象存在,只是数组对象里面没有一个元素
        */
        
        /*
         str = nil; 对象为空
         [str length] == 0;数组存在,但是没有元素
         所以以后使用对象的时候,一定要为对象开辟空间,特别是数组字典这种集合,在进行存值或者其他操作时候,不要忘记开辟空间
         */
       
        /*
          NSMutableDictionary * dic = @{@"key1":@"value1",@"key2":@"value2"};
        dic [@"key1"];//等于写法:[dic objectForKey:@"key1"]
        arr [1];//等于写法:[arr objectAtInde:1]
         */
是否为空的判断
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        printf("创建一个26个数组分别对应一个字典的key值\n");
        NSMutableArray * a = [[NSMutableArray alloc]initWithObjects:@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z", nil];
        NSMutableDictionary * aDic = [[NSMutableDictionary alloc]initWithCapacity:[a count]];
        for (NSString *p  in a) {
            NSMutableArray *arr = [NSMutableArray array];
            [aDic setObject:arr forKey:p];
        }
        NSLog(@"%@",aDic);
    }
    return 0;
}
创建一个字典有26个键分别为A-Z

通讯录实战:

#import <Foundation/Foundation.h>
#import "Contact.h"
#import "AddressBook.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        AddressBook * book = [[AddressBook alloc]init];
        //添加联系人
        Contact *lanou39 = [[Contact alloc]initWithName:@"AAA" gender:@"man" phonenum:@"13523526302" address:@"uc"];
        Contact *lanou38 = [[Contact alloc]initWithName:@"BBB" gender:@"gril" phonenum:@"13523526302" address:@"china"];
        //forin 也叫快速枚举,就是遍历容器或者遍历集合,在遍历的过程中容器中不能修改,如果需修改可用for循环替代
        [book addContact:lanou39];
        [book addContact:lanou38];
        [book displayAllContacs];
        [book deleteContactWithName:@"niujianwei"];
        [book deleteContactWithName:@"Yingjie"];//如果删除有同名的,只能删除一个
        NSMutableArray * forAll = [book allContactWithGroupName:@"N"];
        NSLog(@"获取N分组的联系人:%@",forAll);
        [book displayAllContacs];
        NSMutableArray * grilarr = [book getAllFemaContact];
        NSLog(@"所有的女性为 :%@",grilarr);
        Contact * phone = [book getContactWithPhoneNum:@"13523526302"];
        NSLog(@"电话为13523526302的联系人信息为:%@",phone);
        
        
      
        
        
    /*可删代码(所有的方法都在main函数里写的)
//        //添加联系人
//        Contact * newPer = [[Contact alloc]initWithName:@"new" gender:@"man" phonenum:@"1245879" address:@"newPlace"];
//        NSString * name = [newPer name];
//        NSString * phonenum = [newPer phonenmu];
//        if (!name || ![name length]|| !phonenum || ![phonenum length]) {
//            NSLog(@"添加失败");
//        }
//        else{
//            //获取名字首字母
//            NSString * firstChar = [[name substringToIndex:1]capitalizedString];
//            //获取对应分组
//            NSMutableArray * groupArr = [contactDic objectForKey:firstChar];
//            if (!groupArr) {
//                //如果分组不存在,添加对应的分组
//                groupArr = [NSMutableArray array];
//                [contactDic setObject:groupArr forKey:firstChar];
//            }
//            //添加新的联系人
//            [groupArr addObject:newPer];
//        }
//        NSLog(@"%@",contactDic);
//        //获取某个分组的所有联系人(Y)
//        NSMutableArray * arr = [contactDic objectForKey:@"Y"];
//        NSLog(@"Y分组联系人:%@",arr);
//        //根据电话号码搜索联系人
//        for (NSString * key in contactDic) {
//            NSMutableArray * groupArr = [contactDic objectForKey:key];
//            for (Contact *contact in groupArr) {
//                if ([[contact phonenmu] isEqualToString:@"1245879"]) {
//                    NSLog(@"%@",contact);
//                }else{
//                    NSLog(@"没有此人");
//                }
//            }
//        }
//        //找到所有女性联系人
//        NSMutableArray * grilArr = [NSMutableArray array];
//        for (NSString * key in contactDic) {
//            NSMutableArray * groupArr = [contactDic objectForKey:key];
//            for (Contact * contact in groupArr) {
//                if ([[contact gender]isEqualToString:@"gril"]) {
//                    [grilArr addObject:contact];
//                }
//            }
//         }
//        NSLog(@"女性联系人:%@",grilArr);
//        //根姓名删除联系人
//        for (NSString * key in contactDic) {
//            NSMutableArray * group = contactDic[key];
//            //遍历联系人分组
//            for (int i = 0; i < group.count; i++) {
//                Contact * contact = group[i];
//                if ([[contact name] isEqualToString:@"niu"]) {
//                    //从对应分组中删除联系人
//                    [group removeObjectAtIndex:i];//打方法的时候要注意刚才就写错了
//                    break;
//                }
//            }
//        }
//        //删除某个分组的联系人
//        [contactDic removeObjectForKey:@"X"];
//        NSLog(@"%@",contactDic);
//        //展示所有联系人
//        NSLog(@"%@",contactDic);//打印字典所有的联系人都会打印
//        //
     */
       }
    return 0;
}
  mian()函数文件
main
#import <Foundation/Foundation.h>

@interface Contact : NSObject
{
    NSString * _name;
    NSString * _gender;
    NSString * _phonenum;
    NSString * _address;
    NSString * _groupName;
}
- (void)setName:(NSString *)name;
- (NSString *)name;
- (void)setGender:(NSString *)gender;
- (NSString *)gender;
- (void)setPhoneNmu:(NSString *)phonenum;
- (NSString *)phonenmu;
- (void)setAddress:(NSString *)address;
- (NSString *)address;
- (void)setGroupName:(NSString *)GroupName;
- (NSString *)GroupName;

- (id)initWithName:(NSString *)name
              gender:(NSString *)gender
            phonenum:(NSString *)phonenum
             address:(NSString *)address;
//显示信息
- (void)displayContactInfo;
//描述
- (NSString *)description;
@end
Contact.h
#import "Contact.h"

@implementation Contact
- (void)setName:(NSString *)name{
    _name = name;
}
- (NSString *)name{
    return _name;
}
- (void)setGender:(NSString *)gender{
    _gender  = gender;
}
- (NSString *)gender{
    return _gender;
}
- (void)setPhoneNmu:(NSString *)phonenum{
    _phonenum = phonenum;
}
- (NSString *)phonenmu{
    return _phonenum;
}
- (void)setAddress:(NSString *)address{
    _address = address;
}
- (NSString *)address{
    return _address;
}
- (void)setGroupName:(NSString *)GroupName{
    _groupName = GroupName;
}
- (NSString *)GroupName{
    return _groupName;
}

- (id)initWithName:(NSString *)name
              gender:(NSString *)gender
            phonenum:(NSString *)phonenum
             address:(NSString *)address{
    self = [super init];
    if (self) {
        _name = name;
        _address = address;
        _phonenum = phonenum;
        _gender = gender;
        
    }
    return self;
}
- (void)displayContactInfo{
    NSLog(@"姓名:%@ 性别:%@ 电话:%@ 地址:%@ 分组 %@",_name,_gender,_phonenum,_address,_groupName);
}
- (NSString *)description{
    return [NSString stringWithFormat:@"%@ %@ %@ %@ %@",_name,_gender,_address,_phonenum,_groupName];
}
@end
Contact.m
#import <Foundation/Foundation.h>
#import "Contact.h"

//接口(就是声明的一些方法)
@interface AddressBook : NSObject
//getter
- (NSMutableDictionary *)allContacts;
//添加新的联系人
- (void)addContact:(Contact *)contact;
//获取某个分组的联系人
- (NSMutableArray * )allContactWithGroupName:(NSString *)groupName;
//根据电话号码搜索联系人
- (Contact *)getContactWithPhoneNum:(NSString *)phoneNum;
//获取所有的女性联系人
- (NSMutableArray *)getAllFemaContact;
//根据姓名删除联系人
- (void)deleteContactWithName:(NSString *)name;
//删除某个分组的全部联系人
- (void)deleteAllContactsWithGroupName:(NSString *)groupName;
//展示通讯录中的所有联系人
- (void)displayAllContacs;
//初始化重写
- (id)init;
//自定义初始化方法
- (id)initWithDic;
@end
AddressBook.h
#import "AddressBook.h"

@implementation AddressBook
{
    NSMutableDictionary * _allContacts;//存储所有的联系人
}
//getter
- (NSMutableDictionary *)allContacts{
    return _allContacts;
}
//自定义初始化方法
- (id)initWithDic{
    self = [super init];
    if (self) {
        Contact *yingjie = [[Contact alloc]initWithName:@"Yingjie" gender:@"man"  phonenum:@"12312545" address:@"US" ];
        Contact *ying = [[Contact alloc]initWithName:@"Ying" gender:@"man" phonenum:@"13523526303" address:@"US" ];
        Contact *zhang = [[Contact alloc]initWithName:@"Zhang" gender:@"man" phonenum:@"12312545" address:@"US" ];
        Contact *huang = [[Contact alloc]initWithName:@"Huang" gender:@"man" phonenum:@"12312545" address:@"US" ];
        Contact *liu = [[Contact alloc]initWithName:@"Liuxian" gender:@"gril" phonenum:@"12312545" address:@"US" ];
        Contact *niu = [[Contact alloc]initWithName:@"Niu" gender:@"man" phonenum:@"13523526302" address:@"US" ];
        //创建分组
        NSMutableArray * yArr = [NSMutableArray arrayWithObjects:yingjie,ying, nil];
        NSMutableArray * zArr = [NSMutableArray arrayWithObjects:zhang, nil];
        NSMutableArray * hArr = [NSMutableArray arrayWithObjects:huang, nil];
        NSMutableArray * lArr = [NSMutableArray arrayWithObjects:liu, nil];
        NSMutableArray * nArr = [NSMutableArray arrayWithObjects:niu, nil];
        //把分组名称放到对应的字典(管理所有分组联系人)
        _allContacts = [NSMutableDictionary dictionaryWithObjectsAndKeys:yArr,@"Y",zArr,@"Z",hArr,@"H",lArr,@"",nArr,@"N",lArr,@"L", nil ];

    }
    return self;
}
//添加新的联系人
- (void)addContact:(Contact *)contact{
    if (![contact name]||![[contact name]length]|| ![contact phonenmu]||![[contact phonenmu]length]) {
        NSLog(@"添加失败");
    }else{
        NSString * name = [contact name];
        NSString * fristCahr = [[name substringToIndex:1]capitalizedString];
        NSMutableArray * group = [_allContacts objectForKey:fristCahr];
        if (!group) {
            group = [NSMutableArray array];
            [group addObject:contact];
            [_allContacts setObject:group forKey:fristCahr];
        }
          [group addObject:contact];
    }
}

//获取某个分组的联系人
- (NSMutableArray * )allContactWithGroupName:(NSString *)groupName{
    return [_allContacts objectForKey:groupName];
}
//根据电话号码搜索联系人
- (Contact *)getContactWithPhoneNum:(NSString *)phoneNum{
    for (NSString * key in _allContacts) {
        NSMutableArray * group = _allContacts[key];
        for (Contact *contact in group) {
            if ([[contact phonenmu] isEqualToString:phoneNum]) {
                return contact;
          }
        }
    }
    return nil;
}
//获取所有的女性联系人
- (NSMutableArray *)getAllFemaContact{
    NSMutableArray * girlArr = [NSMutableArray array];
    for (NSString * key in _allContacts) {
        NSMutableArray * group = _allContacts[key];
        for (Contact * contact in group) {
            if ([[contact gender]isEqualToString:@"gril"]) {
                [girlArr addObject:contact];
                return contact;
            }
        }
    }
    return nil;
}
//根据姓名删除联系人
- (void)deleteContactWithName:(NSString *)name{
    //获取姓名的首字母
    NSString * first  = [[name substringToIndex:1]capitalizedString];
    //获取联系人分组
    NSMutableArray * group = [_allContacts objectForKey:first];
    for (Contact *contact in group) {//不能对容器做更改
        if ([[contact name]isEqualToString:name]) {
            [group removeObject:contact];//如果是我们要找的人那就删除
            NSLog(@"删除一条数据成功");
            break;
        }
    }
}
//删除某个分组的全部联系人
- (void)deleteAllContactsWithGroupName:(NSString *)groupName{
    [_allContacts removeObjectForKey:groupName];
    NSLog(@"成功删除分组%@",groupName);
}
//展示通讯录中的所有联系人
- (void)displayAllContacs{
    NSLog(@"%@",_allContacts);
}
//重写init 方法
- (id)init{
    self = [super init];
    if (self) {
        //存储联系人
        //建立联系人对象
        Contact *yingjie = [[Contact alloc]initWithName:@"Yingjie" gender:@"man"  phonenum:@"12312545" address:@"US" ];
        Contact *ying = [[Contact alloc]initWithName:@"Ying" gender:@"man" phonenum:@"13523526303" address:@"US" ];
        Contact *zhang = [[Contact alloc]initWithName:@"Zhang" gender:@"man" phonenum:@"12312545" address:@"US" ];
        Contact *huang = [[Contact alloc]initWithName:@"Huang" gender:@"man" phonenum:@"12312545" address:@"US" ];
        Contact *liu = [[Contact alloc]initWithName:@"Liuxian" gender:@"gril" phonenum:@"12312545" address:@"US" ];
        Contact *niu = [[Contact alloc]initWithName:@"Niu" gender:@"man" phonenum:@"13523526302" address:@"US" ];
        //创建分组
        NSMutableArray * yArr = [NSMutableArray arrayWithObjects:yingjie,ying, nil];
        NSMutableArray * zArr = [NSMutableArray arrayWithObjects:zhang, nil];
        NSMutableArray * hArr = [NSMutableArray arrayWithObjects:huang, nil];
        NSMutableArray * lArr = [NSMutableArray arrayWithObjects:liu, nil];
        NSMutableArray * nArr = [NSMutableArray arrayWithObjects:niu, nil];
        //把分组名称放到对应的字典(管理所有分组联系人)
        _allContacts = [NSMutableDictionary dictionaryWithObjectsAndKeys:yArr,@"Y",zArr,@"Z",hArr,@"H",lArr,@"L",nArr,@"N", nil ];
    }
    return self;
}
@end
AddressBook.m

 

转载于:https://www.cnblogs.com/benpaobadaniu/p/4735583.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值