main函数中通过使用Person类和AddressBook类,创建对象、调用方法,实现以下8个功能


//adressbook.m

//初始化

-(id)init{
    if (self = [super init]) {
        _allPersonDic = [[NSMutableDictionary alloc]initWithCapacity:26];
    }
    return self;
}


-(void)dealloc{
    [_allPersonDic release];
    [super dealloc];
}


//3.添加联系人
-(BOOL)addPerson:(Person *)aPerson;{
    if ((aPerson.name == nil || aPerson.phoneNumber == nil) || ([aPerson.name isEqualToString:@""]||[aPerson.phoneNumber isEqualToString:@""])) {
        NSLog(@"输入的信息不完整,无法添加");
        return NO;
    }
    //key
    NSString *key = [aPerson groupName];
    //value
    NSMutableArray *value = [_allPersonDic objectForKey:key];
    if (value == nil) {
        NSLog(@"没有这个分组");
        value = [[NSMutableArray alloc] initWithCapacity:10];
        [value addObject:aPerson];
        [_allPersonDic setObject:value forKey:key];
    }
    else{
        [value addObject:aPerson];
    }
    return YES;
}

//4.根据电话查找联系人
-(Person *)findPersonWithPhoneNumber:(NSString *)aPhoneNumber{
    for (NSString *key in _allPersonDic) {
        NSMutableArray *array =[_allPersonDic objectForKey:key];
        for (Person * per in array) {
            if ([[per  phoneNumber] isEqualToString:aPhoneNumber]) {
                return per;
            }
        }
    }
    return nil;
}


//5.根据性别查找联系人
-(NSArray *)findPersonWithSex:(NSString *)aSex{

    NSMutableArray *array =[NSMutableArray array];
    for (NSString *key in _allPersonDic) {
        NSMutableArray *arr = [_allPersonDic objectForKey:key];
        for (Person * per in arr) {
            if ([[per sex] isEqualToString:aSex]) {
                [array addObject:per];
            }
        }
    }
    //block排序
   
    typedef NSComparisonResult (^SortBlock)(Person* obj1,Person* obj2);
    SortBlock ageDesc = ^(Person * person1,Person * person2){
        if (person1.age > person2.age)
        {
            return NSOrderedDescending;
        }
        else if (person1.age < person2.age){
            return NSOrderedAscending;
        }
        else
        {
            return NSOrderedSame;
        }
    };
    [array sortUsingComparator:ageDesc];
    

    return array;
    
}

//6.根据姓名,更改联系人
-(BOOL)changePersonWithName:(NSString *)name
             andphoneNumber:(NSString *)phoneName
                     andAge:(int)age
                     andSex:(NSString *)sex{
    for (NSString *key in _allPersonDic){
        NSMutableDictionary * allDic = [_allPersonDic objectForKey:key];
        for (Person * per  in allDic) {
            if ([[per name] isEqualToString:name]) {
                per.sex = sex;
                per.phoneNumber = phoneName;
                per.age = age;
                NSLog(@"联系人更改成功!");
                return YES;
            }
        }
    }
    return NO;
}

//7. 根据姓名,删除联系人
-(BOOL)deletePersonWithName:(NSString *)name{
    for (NSString *key in _allPersonDic) {
        NSMutableArray *Array = [_allPersonDic objectForKey:key];
        for (Person * per in Array) {
            if ([[per name] isEqualToString:name]){
                [Array removeObject:per];
                NSLog(@"联系人删除成功");
                if ([Array count] == 0) {
                    [_allPersonDic removeObjectForKey:key];
                    NSLog(@"这组联系人都删除");
                }
                
                return YES;
            }
        }
    }
    NSLog(@"无此联系人");
    return NO;
}

//8. 删除所有的联系人
-(BOOL)deleteGroupName:(NSString *)agroupName{
    for (NSString * key in _allPersonDic) {
        if ([key isEqualToString:agroupName]) {
            NSMutableArray *array = [_allPersonDic objectForKey:agroupName];
            [array removeAllObjects];
            [_allPersonDic removeObjectForKey:agroupName];
            NSLog(@"找到了这个分组,删除成功");
            return YES;
        }
    }
    NSLog(@"没有找到该分组");
    return NO;
}

//9输出所有的联系人
-(void)showAll{
    for (NSString * key in _allPersonDic) {
        NSMutableArray * array = [_allPersonDic objectForKey:key];
        for (Person * per in array) {
            NSLog(@"%@",per);
        }
    }
}

//person.m


//自定义初始化
-(id)initWithName:(NSString *)name
           andSex:(NSString *)sex
   andPhoneNumber:(NSString *)phoneNumber
           andAge:(int)age
     andGroupName:(NSString *)groupName{
    if (self = [super init]) {
        _name = name;
        _sex = sex;
        _phoneNumber = phoneNumber;
        _age = age;
        _groupName = groupName;
    }
    return self;
}
//便利构造器
+(id)personWithName:(NSString *)name
             andSex:(NSString *)sex
     andPhoneNumber:(NSString *)phoneNumber
             andAge:(int)age
       andGroupName:(NSString *)groupName{
    Person * per = [[Person alloc]initWithName:name andSex:sex andPhoneNumber:phoneNumber andAge:age andGroupName:groupName];
    return [per autorelease];
}

//系统输出
-(NSString *)description{
    return [NSString stringWithFormat:@"姓名:%@ 性别:%@ 年龄:%d 电话:%@",_name,_sex,_age,_phoneNumber];
}

//释放内存

- (void)dealloc{
    [_name release];
    [_sex release];
    [_phoneNumber release];
    [_groupName release];
    [super dealloc];
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值