OC---第六讲作业

#import <Foundation/Foundation.h>
@interface AddressPerson : NSObject

@property NSString *name;//姓名
@property NSString *address;//地址
@property NSString *email;//邮箱
@property NSString *phoneNumber;//电话号码
@property NSString *grouping;//分组
//初始化
- (id)initWithName:(NSString*)name andAddress:(NSString *)address andEmail:(NSString*)email andPhoneNumber:(NSString *)phoneNumber andGrouping:(NSString*)grouping;
//便利构造器
+ (AddressPerson*)WithName:(NSString*)name andAddress:(NSString *)address andEmail:(NSString*)email andPhoneNumber:(NSString *)phoneNumber andGrouping:(NSString*)grouping;
//判断邮箱是否合法
+ (BOOL) validateEmail:(NSString *)email;
@end


#import "AddressPerson.h"

@implementation AddressPerson

- (NSString*)description
{
    return [[NSString alloc]initWithFormat:@"%@,%@,%@,%@,%@",_name,_address,_email,_phoneNumber ,_grouping];
}
//初始化
- (id)initWithName:(NSString*)name andAddress:(NSString *)address andEmail:(NSString*)email andPhoneNumber:(NSString *)phoneNumber andGrouping:(NSString*)grouping
{
    if (self = [super init]) {
        _name = name;
        _address = address;
        _email = email;
        _phoneNumber = phoneNumber;
        _grouping = grouping;
    }
    return self;
}
//便利构造器
+ (AddressPerson*)WithName:(NSString*)name andAddress:(NSString *)address andEmail:(NSString*)email andPhoneNumber:(NSString *)phoneNumber andGrouping:(NSString*)grouping
{
    AddressPerson *addressPerson = [[AddressPerson alloc]initWithName:name andAddress:address andEmail:email andPhoneNumber:phoneNumber andGrouping:grouping];
    return addressPerson;
}
//判断邮箱是否合法
+ (BOOL) validateEmail:(NSString *)email
{
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:email];
}

@end





#import <Foundation/Foundation.h>
@class AddressPerson;
@interface AddressBook : NSObject
@property NSMutableArray *allContact;//所有的联系人
@property NSMutableDictionary *groupContactDic ;//管理通讯录的字典

//添加联系人
- (void)addNewAddressContact:(AddressPerson*)contact;
//通讯录输出所有的联系人。要求:按照姓名排序、姓名相同按照邮箱地址进行排序
- (void)getAllContact;
//从通讯录中根据电话号码搜索联系人
- (void)phoneOfNumber:(NSString*)phoneNumber;
//从通讯录中根据姓名搜索联系人
- (void)nameOfNumber:(NSString*)name;
@end


#import "AddressBook.h"
#import "AddressPerson.h"
@implementation AddressBook
- (id)init
{
    if (self = [super init]) {
        //初始化分组联系人的字典对象
        //1.创建26个键值
        NSArray *keyArray = [[NSArray 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];
        //2.创建26个键值对应的value
        NSMutableArray *valueArray = [[NSMutableArray alloc]initWithCapacity:10];
        for (int i = 0 ; i < [keyArray count]; i ++) {
            NSMutableArray *groupArray = [[NSMutableArray alloc]init];
            [valueArray addObject:groupArray];
        }
        //3.初始化字典
        _groupContactDic = [[NSMutableDictionary alloc]initWithObjects:valueArray forKeys:keyArray];
        //初始化所有人联系人数组
        _allContact = [[NSMutableArray alloc]initWithCapacity:10];

    }
    return self;
}

//添加联系人
- (void)addNewAddressContact:(AddressPerson*)contact
{
    if ([contact name]!=nil&&[AddressPerson validateEmail:[contact email]]) {
        NSMutableArray *array = [_groupContactDic objectForKey:[contact grouping]];
        [array addObject:contact];
        [_allContact addObject:contact];
        NSLog(@"添加成功");
    }else{
        NSLog(@"添加失败");
    }
}


//通讯录输出所有的联系人。要求:按照姓名排序、姓名相同按照邮箱地址进行排序
- (void)getAllContact
{
    NSArray *newArray = [_allContact sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        AddressPerson *contact = (AddressPerson*)obj1;
        AddressPerson *contact1 = (AddressPerson*)obj2;
        if ([[contact name] compare:[contact1 name]]!=0) {
            return [[contact name] compare:[contact1 name]];
        }
        else {
            return [[contact email ] compare:[contact1 email]];
        }
      
    } ];
    
    NSLog(@"%@",newArray);
}


//从通讯录中根据电话号码搜索联系人
- (void)phoneOfNumber:(NSString*)phoneNumber
{
    for (id object in _allContact) {
        if ([[object phoneNumber] compare:phoneNumber]==0) {
            NSLog(@"%@",  [object description]);
        }

    }
}

//从通讯录中根据姓名搜索联系人
- (void)nameOfNumber:(NSString*)name
{
    for (id object in _allContact) {
        if ([[object name] compare:name]==0) {
            NSLog(@"%@",  [object description]);
        }
        
    }
}
@end



//第一题请创建一个数组,初始化为@‘’123“等。使用block语法,进行数组的排序。并输出内容
/*
    //NSArray *array =  @[@"123",@"21",@"33",@"69",@"108",@"256"];
    NSArray *array = [[NSArray alloc]initWithObjects:@"123",@"21",@"33",@"69",@"108",@"256", nil];
    NSArray *newArray = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        NSString *str = (NSString*)obj1;
        NSString *str1 = (NSString*)obj2;
        return [obj1 compare:obj2];

    }];
    NSLog(@"%@",newArray);
    
    */
    /*===============================================================*/
    //第二题  建议的通讯录
    AddressPerson *contact1 = [[AddressPerson alloc]initWithName:@"Thang san" andAddress:@"123" andEmail:@"124325srf@sufdh.com" andPhoneNumber:@"ast235346645" andGrouping:@"T"];
    AddressPerson *contact2 = [[AddressPerson alloc]initWithName:@"Lhang san" andAddress:@"325" andEmail:@"13hhgf@sgfh.com" andPhoneNumber:@"ast235346645" andGrouping:@"L"];
    AddressPerson *contact3 = [[AddressPerson alloc]initWithName:@"Li san" andAddress:@"1er" andEmail:@"1sdfrf@sufgddsh.com" andPhoneNumber:@"ast235346645" andGrouping:@"L"];
    AddressPerson *contact4 = [[AddressPerson alloc]initWithName:@"Wangg san" andAddress:@"er" andEmail:@"1rfgm5srf@sufbh.cnew" andPhoneNumber:@"ast235346645" andGrouping:@"W"];
    AddressPerson *contact5 = [[AddressPerson alloc]initWithName:@"Fang san" andAddress:@"1sdg" andEmail:@"1243asdf@sufdh.comw" andPhoneNumber:@"ast235346645" andGrouping:@"F"];
    AddressBook *book = [[AddressBook alloc]init];
    [book addNewAddressContact:contact1];
    [book addNewAddressContact:contact2];
    [book addNewAddressContact:contact3];
    [book addNewAddressContact:contact4];
    [book addNewAddressContact:contact5];
    [book getAllContact];
//    [book phoneOfNumber:@"ast235346645"];
//    [book nameOfNumber:@"Zhang san"];

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值