#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;
}