Dictionary运用之通讯录小程序

@实现通讯录。需求:
1、创建联系人类AddressContact,联系人可以存储姓名(英文,首字母大写)、地址、邮箱、电话号码、分组名(即大写字母A~Z)。
2、创建通讯录类AddressBook。
3、通讯录使用字典分组管理所有联系人。(即key是大写字母A~Z,每个key对应的值是数组,管理对应的联系人).
4、通讯录可以添加联系人。要求:
(1)添加到对应的分组中,
(2)添加时需要进行验证,如果姓名为空或手机号为空,不能添加,并输出:联系人姓名或手机号不能为空。
(3)如果添加成功,输出:添加联系人成功。
5、输出所有联系人,并按照姓名升序排列。即返回值为数组类型,并对整个数组中的元素进行排序。
//选作

6,可以按照电话号码搜索联系人,返回值为联系人对象。

#import <Foundation/Foundation.h>

@interface AddressContact : NSObject{

    NSString * _name;
    NSString * _address;
    NSString * _emil;
    NSString * _telephone;
    NSString * _headName;
}

@property (nonatomic,strong) NSString * name;         // 姓名
@property (nonatomic,strong) NSString * address;      // 地址
@property (nonatomic,strong) NSString * emil;         // 邮箱
@property (nonatomic,strong) NSString * telephone;    // 电话
@property (nonatomic,strong) NSString * headName;     // 分组名(26个字母A-Z)

+ (id)addressContactWithName:(NSString *)name Address:(NSString *)address Emil:(NSString *)emil Telephone:(NSString *)telephone HeadName:(NSString *)headName;

@end

#import "AddressContact.h"

@implementation AddressContact

+ (id)addressContactWithName:(NSString *)name Address:(NSString *)address Emil:(NSString *)emil Telephone:(NSString *)telephone HeadName:(NSString *)headName{

    AddressContact * selfAC = [[[self class] alloc]init];
    
    selfAC.name = name;
    selfAC.address = address;
    selfAC.emil = emil;
    selfAC.telephone = telephone;
    selfAC.headName = headName;

    return selfAC;
}

- (NSString *)description{

    return [NSString stringWithFormat:@"姓名:%@ 地址:%@ emil:%@ 电话:%@ 首字母:%@",self.name,self.address,self.emil,self.telephone,self.headName];

}

@end

#import <Foundation/Foundation.h>

@class AddressContact;
@interface AddressBook : NSObject

@property (nonatomic,strong) NSArray * keys;                    // key
@property (nonatomic,strong) NSMutableArray * values;           // value
@property (nonatomic,strong) NSMutableDictionary * abDic;       // Dictionary

- (id)init;

// 显示全部联系人
- (void)showAllContactWithCount:(NSUInteger) count;

// 可以按照电话号码搜索联系人,返回值为联系人对象
- (AddressContact *)selectContactWithTelephone:(NSString *)telephone;

@end

#import "AddressBook.h"
#import "AddressContact.h"

@implementation AddressBook


- (id)init{

    if (self = [super init]) {
        
        _keys = [NSArray arrayWithObjects:@"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];
        
        
        _values = [NSMutableArray array];
        for (int i = 0; i < [_keys count]; i++) {
            
            // 一定要初始化,要不是直接用_values加对象会报错,因为_value不初始化只是一个指针,只有初始化,它才是一个数组对象(切记切记!!!!)
            [_values addObject:[NSMutableArray array]];
        }
        
        _abDic = [[NSMutableDictionary alloc] initWithObjects:_values forKeys:_keys];
        
    }

    return self;
}

- (void)showAllContactWithCount:(NSUInteger) count{

    NSLog(@"姓名         地址       emil          电话     首字母");
    for (int i = 0; i < count; i++) {
        
        AddressContact * adContact = [_values objectAtIndex:i];
        
        
        NSLog(@"%@ %@ %@ %@ %@",adContact.name,adContact.address,adContact.emil,adContact.telephone,adContact.headName);
        
        
    }

}

- (AddressContact *)selectContactWithTelephone:(NSString *)telephone{


    for (int i = 0; i < [_values count]; i++) {
        
        AddressContact * adContact = [_values objectAtIndex:i];
        if ([adContact.telephone isEqualToString:telephone]) {
            
            return adContact;
        }
    }


    return 0;

}

@end


int main(int argc, const char * argv[])
    {
        
        @autoreleasepool {
            
            AddressContact * person1      = [AddressContact addressContactWithName:@"Zumingtao" Address:@"江西" Emil:@"humingtao2013@126.com" Telephone:@"18601982565" HeadName:@"Z"];
            AddressContact * person2      = [AddressContact addressContactWithName:@"Zhaoweisong" Address:@"河北" Emil:@"zhaoweisong2013@126.com" Telephone:@"18618956482" HeadName:@"Z"];
            AddressContact * person3      = [AddressContact addressContactWithName:@"Fanjunpeng" Address:@"河南" Emil:@"fanjunpeng@126.com" Telephone:@"15502369875" HeadName:@"F"];
            AddressContact * person4      = [AddressContact addressContactWithName:@"Chenfengchang" Address:@"天津" Emil:@"chenfengchang@126.com" Telephone:@"18601982565" HeadName:@"C"];
            AddressContact * person5      = [AddressContact addressContactWithName:@"Niexuwang" Address:@"四川" Emil:@"niexuwang2013@126.com" Telephone:@"15862548169" HeadName:@"N"];
            AddressContact * person6      = [AddressContact addressContactWithName:@"Yanguo" Address:@"全真教" Emil:@"yanguolove2013@126.com" Telephone:@"13578569452" HeadName:@"Y"];
            AddressContact * person7      = [AddressContact addressContactWithName:@"Xiaolongnv" Address:@"古墓" Emil:@"xiaolongnv@126.com" Telephone:@"14785698562" HeadName:@"X"];
            
            AddressBook * adBook = [[AddressBook alloc]init];
            
            adBook.values = [NSMutableArray arrayWithObjects:person1,person2,person3,person4,person5,person6,person7,nil];
            for (int i = 0; i < [adBook.values count]; i++) {
                
                
                if (((AddressContact *)[adBook.values objectAtIndex:i]).name == nil || ((AddressContact *)[adBook.values objectAtIndex:i]).telephone == nil) {
                    NSLog(@"%@----------不能添加,联系人姓名或手机号不能为空",[adBook.values objectAtIndex:i]);
                }else{
                    
                    [(NSMutableArray *)[adBook.abDic objectForKey:((AddressContact *)[adBook.values objectAtIndex:i]).headName] addObject:[adBook.values objectAtIndex:i]];
                    //[adBook.abDic setObject:[adBook.values objectAtIndex:i] forKey: ((AddressContact *)[adBook.values objectAtIndex:i]).headName];
                    NSLog(@"%@----------添加成功",[adBook.values objectAtIndex:i]);
                }
            }
            
            for (int i = 0; i < [[adBook.abDic allKeys] count]; i++) {
                
                if ([adBook.abDic objectForKey:[[adBook.abDic allKeys] objectAtIndex:i]] != nil) {
            NSLog(@"key = value <====> %@ = %@",[[adBook.abDic allKeys] objectAtIndex:i],[adBook.abDic objectForKey:[[adBook.abDic allKeys] objectAtIndex:i]]);
                }
                
            }
            
            
            NSLog(@"%@",adBook.abDic);
            
            // 输出所有联系人,并按照姓名升序排列。即返回值为数组类型,并对整个数组中的元素进行排序。
            [adBook.values sortUsingComparator:^NSComparisonResult(AddressContact * obj1, AddressContact * obj2) {
                
                return [obj1.name compare:obj2.name];
                
            }];
            [adBook showAllContactWithCount:[adBook.values count]];
            
            
            NSLog(@"-------------------------------------------------------------------------------------------");
            // 可以按照电话号码搜索联系人,返回值为联系人对象  
            NSLog(@"%@",[adBook selectContactWithTelephone:@"14785698562"]);  
            
        }  
        return 0;  
    }





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值