//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];
}