#import <Foundation/Foundation.h>
@interface Contact : NSObject
@property (nonatomic ,retain)NSString *name;
@property (nonatomic ,retain)NSString *gender;
@property (nonatomic ,assign )NSInteger age;
@property (nonatomic ,retain)NSString *phonenumber;
@property (nonatomic ,retain)NSString *address;
@property (nonatomic ,retain)NSString * groupName;
- (id )initWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger )age phonenumber:(NSString *)phonenumber adderss:(NSString *)adderss groupName:(NSString *)groupName;
+(id )contactWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger )age phonenumber:(NSString *)phonenumber adderss:(NSString *)adderss groupName:(NSString *)groupName;
@end
#import "Contact.h"
@implementation Contact
- (id )initWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger )age phonenumber:(NSString *)phonenumber adderss:(NSString *)adderss groupName:(NSString *)groupName{
self = [super init];
if (self ) {
_name =name;
_gender = gender;
_age = age;
_phonenumber =phonenumber;
_address =adderss;
_groupName= groupName;
}
return self ;
}
+(id )contactWithName:(NSString *)name gender:(NSString *)gender age:(NSInteger )age phonenumber:(NSString *)phonenumber adderss:(NSString *)adderss groupName:(NSString *)groupName{
Contact *con = [[Contact alloc] initWithName:name gender:gender age:age phonenumber:phonenumber adderss:adderss groupName:groupName];
return con;
}
- (NSString *)description{
return [NSString stringWithFormat:@"%@,%@,%@" ,_name,_gender,_groupName];
}
@end
#import <Foundation/Foundation.h>
#import "Contact.h"
@interface ContactManager : NSObject
@property (nonatomic ,retain) NSMutableDictionary *contactDic;
-(instancetype)init;
- (void )addContact:(Contact *)contact;
-(NSMutableArray *)getContactForGroupName:(NSString *)groupName;
- (Contact *)getContactForPhoneNumber:(NSString *)phoneNumber;
- (NSMutableArray *)getContactForGender:(NSString *)gender;
-(void )removeContactForName:(NSString *)name;
- (void )removeContactsForGroupName:(NSString *)groupName;
-(void )displayAllContactsTnfo;
@end
#import "ContactManager.h"
@implementation ContactManager
-(instancetype)init{
self = [super init];
if (self ) {
_contactDic = [NSMutableDictionary dictionaryWithCapacity:1 ];
}
return self ;
}
- (void )addContact:(Contact *)contact{
NSString *name =contact.name ;
NSString *phoneNumber = contact.phonenumber ;
if ([name isEqualToString:@"" ]||[phoneNumber isEqualToString:@"" ]||name ==nil ||phoneNumber == nil ) {
NSLog (@"亲,添加失败!" );
return ;
}
NSString *group = contact.groupName ;
NSMutableArray *contactArray =[_contactDic objectForKey:group];
if (contactArray ==nil ) {
contactArray = [NSMutableArray arrayWithCapacity:1 ];
[contactArray addObject:contact];
[_contactDic setObject:contactArray forKey:group];
}else {
[contactArray addObject:contact];
}
}
-(NSMutableArray *)getContactForGroupName:(NSString *)groupName{
NSMutableArray *contactArray = [_contactDic objectForKey:groupName];
[contactArray sortUsingComparator:^NSComparisonResult(id obj1,id obj2) {
Contact *contact1 = (Contact *)obj1;
Contact *contact2 = (Contact *)obj2;
return [contact1.name compare:contact2.name ];
}];
return contactArray;
}
- (Contact *)getContactForPhoneNumber:(NSString *)phoneNumber{
for (NSString *keyin _contactDic) {
NSMutableArray *contactArray = [_contactDic objectForKey:key];
for (Contact *contactin contactArray) {
if ([contact.phonenumber isEqualToString:phoneNumber]) {
return contact;
}
}
}
return nil ;
}
- (NSMutableArray *)getContactForGender:(NSString *)gender{
NSMutableArray *genderArray = [NSMutableArray arrayWithCapacity:1 ];
for (NSString *keyin _contactDic) {
NSMutableArray *conractArray = [_contactDic objectForKey:key];
for (Contact *contactin conractArray) {
if ([contact.gender isEqualToString:gender]) {
[genderArray addObject:contact];
}
}
}
[genderArray sortedArrayUsingComparator:^NSComparisonResult(id obj1,id obj2) {
Contact *contact1 = (Contact *)obj1;
Contact *contact2 = (Contact *)obj2;
return [@(contact1.age ) compare:@(contact2.age )];
}];
return genderArray;
}
-(void )removeContactForName:(NSString *)name{
NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:1 ];
for (NSString *keyin _contactDic) {
NSMutableArray *contactArray = [_contactDic objectForKey:key];
tempArray = [NSMutableArray arrayWithArray:contactArray];
for (Contact *contactin contactArray) {
if ([contact.name isEqualToString:name]) {
[contactArray removeObject:contact];
}
}
}
}
- (void )removeContactsForGroupName:(NSString *)groupName{
[_contactDic removeObjectForKey:groupName];
}
-(void )displayAllContactsTnfo{
for (NSString *keyin _contactDic) {
NSMutableArray *contactArray = [_contactDic objectForKey:key];
for (Contact *contactin contactArray) {
NSLog (@"%@,%@,%ld,%@" ,contact.name ,contact.gender ,contact.age ,contact.address );
}
}
}
@end
#import <Foundation/Foundation.h>
#import "Contact.h"
#import "ContactManager.h"
int main(int argc,constchar * argv[]) {
Contact *contact1 = [Contact contactWithName:@"mayun" gender:@"man" age:48 phonenumber:@"34354546" adderss:@"hanzhou" groupName:@"M" ];
Contact *contact2 = [Contact contactWithName:@"mahuateng" gender:@"man" age:40 phonenumber:@"348586" adderss:@"shenzheng" groupName:@"M" ];
Contact *contact3 = [Contact contactWithName:@"renzhengfei" gender:@"man" age:58 phonenumber:@"0797866" adderss:@"shenzheng" groupName:@"R" ];
Contact *contact4 = [Contact contactWithName:@"dongmingzhu" gender:@"woman" age:79 phonenumber:@"6889543" adderss:@"zhuhai" groupName:@"D" ];
Contact *contact5 = [Contact contactWithName:@"leijun" gender:@"man" age:70 phonenumber:@"0865" adderss:@"beijing" groupName:@"L" ];
ContactManager *contactManager = [[ContactManager alloc ]init];
[contactManager addContact:contact1];
[contactManager addContact:contact2];
[contactManager addContact:contact3];
[contactManager addContact:contact4];
[contactManager addContact:contact5];
Contact *contact = [contactManager getContactForPhoneNumber:@"6889543" ];
NSLog (@"%@" ,contact);
NSMutableArray *array = [contactManager getContactForGender:@"man" ];
NSLog (@"%@" , array);
return0;
}