用OC语⾔言完成简易通讯录(实现增删改查)功 能. (注:使用MRC)
2015-08-28 17:32
691 查看
#import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatomic, copy) NSString *name; @property (nonatomic, copy) NSString *gender; @property (nonatomic, copy) NSString *phone; @property (nonatomic, copy) NSString *group; @property (nonatomic, assign) int age; - (instancetype)initWithName:(NSString *)name gender:(NSString *)gender phone:(NSString *)phone age:(int)age; + (id)personWithName:(NSString *)name gender:(NSString *)gender phone:(NSString *)phone age:(int)age; @end
#import "Person.h" @implementation Person - (NSString *)description { return [NSString stringWithFormat:@"name:%@,age:%d,gender:%@,phone:%@", self.name,self.age,self.gender,self.phone]; } - (instancetype)initWithName:(NSString *)name gender:(NSString *)gender phone:(NSString *)phone age:(int)age { self = [super init]; if (self) { self.name = name; self.gender = gender; self.phone = phone; self.age = age; } return self; } + (id)personWithName:(NSString *)name gender:(NSString *)gender phone:(NSString *)phone age:(int)age { Person *p = [[Person alloc] initWithName:name gender:gender phone:phone age:age] ; [p autorelease]; return p; } - (void)dealloc { [_name release]; [_gender release]; [_phone release]; [_group release]; NSLog(@"%@对象被销毁",self); [super dealloc]; } @end
#import <Foundation/Foundation.h> @interface NSString (Characters) + (NSString *)firstCharWithName:(NSString *)name; @end
#import "NSString+Characters.h" @implementation NSString (Characters) + (NSString *)firstCharWithName:(NSString *)name { return [[name substringToIndex:1] uppercaseString]; } @end
#import <Foundation/Foundation.h> #import "Person.h" #import "NSString+Characters.h" @interface AddressBook : NSObject @property (nonatomic, retain) NSMutableDictionary *allPersonDic; // 3.添加联系人 - (BOOL)addPerson:(Person *)aPerson; // 4.根据电话查找某个联系人. -(Person *)findPersonWithPhoneNum:(NSString *)aPhoneNum; // 5.根据性别查找联系人,并将查到的联系人按照年龄升序排序 -(NSArray *)findPersonsWithSex:(NSString *)aSex; // 6.根据姓名,更改联系人信息. -(BOOL)changePersonWithName:(NSString *)name phoneNum:(NSString *)aNum sex:(NSString *)aSex age:(int)aAge; // 7.按照姓名删除联系人 - (BOOL)deletePersonWithName:(NSString *)aPersonName; // 8.删除一个分组 - (BOOL)deleteGroup:(NSString *)aGroupName; // 9.展示通讯录中的所有联系人信息 -(void)showAll; @end
#import "AddressBook.h" @implementation AddressBook - (instancetype)init { self = [super init]; if (self) { self.allPersonDic = [NSMutableDictionary dictionaryWithCapacity:1]; } return self; } - (void)dealloc { [_allPersonDic release]; NSLog(@"%@对象被销毁",self); [super dealloc]; } // 3.添加联系人 - (BOOL)addPerson:(Person *)aPerson { BOOL isAdd = NO; if (aPerson.name == nil || aPerson.phone == nil) { NSLog(@"添加失败"); }else { NSString *firstChar = [NSString firstCharWithName:aPerson.name]; NSMutableArray *mArr = [self.allPersonDic valueForKey:firstChar]; if (mArr == nil) { NSMutableArray *mArr = [NSMutableArray arrayWithCapacity:1]; [self.allPersonDic setObject:mArr forKey:firstChar]; [mArr addObject:aPerson]; }else { [mArr addObject:aPerson]; } isAdd = YES; NSLog(@"添加成功"); } return isAdd; } // 4.根据电话查找某个联系人. -(Person *)findPersonWithPhoneNum:(NSString *)aPhoneNum { for (id key in self.allPersonDic) { for (Person *person in [self.allPersonDic valueForKey:key]) { if ([aPhoneNum isEqualToString:person.phone]) { return person; } } } return nil; } // 5.根据性别查找联系人,并将查到的联系人按照年龄升序排序 -(NSArray *)findPersonsWithSex:(NSString *)aSex { NSMutableArray *mArrSort = [NSMutableArray arrayWithCapacity:1]; for (id key in self.allPersonDic) { NSMutableArray *mArr = [self.allPersonDic valueForKey:key]; for (Person *person in mArr) { if ([aSex isEqualToString:person.gender]) { [mArrSort addObject:person]; } } } [mArrSort sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { return [obj1 age] > [obj2 age]; }]; return mArrSort; } // 6.根据姓名,更改联系人信息. -(BOOL)changePersonWithName:(NSString *)name phoneNum:(NSString *)aNum sex:(NSString *)aSex age:(int)aAge { BOOL isChange = NO; if (aNum == nil || aSex == nil || aAge == 0) { NSLog(@"更新失败"); }else { for (id key in self.allPersonDic) { for (Person *person in [self.allPersonDic valueForKey:key]) { if ([name isEqualToString:person.name]) { [person initWithName:name gender:aSex phone:aNum age:aAge]; isChange = YES; } } } NSLog(@"更新成功"); } return isChange; } // 7.按照姓名删除联系人 - (BOOL)deletePersonWithName:(NSString *)aPersonName { BOOL isDeletePerson = NO; for (id key in self.allPersonDic) { NSMutableArray *mArr = [self.allPersonDic valueForKey:key]; for (NSInteger i = [mArr count]; i > 0 ; i--) { if ([aPersonName isEqualToString:[[mArr objectAtIndex:i-1] name]]) { [mArr removeObjectAtIndex:i-1]; // 当删除联系⼈后分组为空时,需要删除该分组 if ([self.allPersonDic[key] count] == 0) { [self.allPersonDic removeObjectForKey:key]; } isDeletePerson = YES; } } } return isDeletePerson; } // 8.删除一个分组 - (BOOL)deleteGroup:(NSString *)aGroupName { BOOL isDeleteGroup = NO; for (id key in self.allPersonDic) { if ([aGroupName isEqualToString:key]) { isDeleteGroup = YES; } } [self.allPersonDic removeObjectForKey:aGroupName]; return isDeleteGroup; } // 9.展示通讯录中的所有联系人信息 -(void)showAll { NSLog(@"%@",self.allPersonDic); } - (NSString *)description { return [NSString stringWithFormat:@"%@", self.allPersonDic]; } @end
#import <Foundation/Foundation.h> #import "Person.h" #import "AddressBook.h" int main(int argc, const char * argv[]) { @autoreleasepool { Person *p1 = [Person personWithName:@"Lucy" gender:@"woman" phone:@"123" age:21]; Person *p2 = [Person personWithName:@"Joe" gender:@"man" phone:@"456" age:17]; Person *p3 = [Person personWithName:@"Baby" gender:@"woman" phone:@"789" age:27]; Person *p4 = [Person personWithName:@"Linda" gender:@"woman" phone:@"000" age:21]; AddressBook *book = [[[AddressBook alloc] init] autorelease]; // 3.添加联系人 [book addPerson:p1]; [book addPerson:p2]; [book addPerson:p3]; [book addPerson:p4]; [book showAll]; // 4.根据电话查找某个联系人. Person *findPerson = [book findPersonWithPhoneNum:@"456"]; NSLog(@"%@",findPerson); // 5.根据性别查找联系人,并将查到的联系人按照年龄升序排序 NSArray *arrSort = [book findPersonsWithSex:@"woman"]; NSLog(@"%@",arrSort); // 6.根据姓名,更改联系人信息. BOOL isChange = [book changePersonWithName:@"Linda" phoneNum:@"012" sex:@"woman" age:25]; if (isChange) { [book showAll]; } // 7.按照姓名删除联系人 BOOL isDeletePerson = [book deletePersonWithName:@"Baby"]; if (isDeletePerson) { NSLog(@"删除成功"); [book showAll]; } // 8.删除一个分组 BOOL isDeleteGroup = [book deleteGroup:@"L"]; if (isDeleteGroup) { NSLog(@"删除成功"); [book showAll]; } // 9.展示通讯录中的所有联系人信息 [book showAll]; } return 0; }
相关文章推荐
- LINUX之旅
- nginx基本介绍
- Linux系统安装apache
- HDU 1257 最少拦截系统
- HDU 4465 Candy(概率)
- iOS中绘制圆形的函数方法
- Java中的匿名对象
- UIView的layoutSubviews和drawRect方法何时调用
- Dynamics AX R2 业务系列-采购业务流程
- 敏捷软件开发:原则、模式与实践——第14章 使用UML
- 结构体,共用体和枚举类型的区别
- InstaMaterial - eclipse 版(学习总结)
- Spring 整合 Redis
- 【OpenCV学习笔记】一.操作像素
- Laravel对路由的的实现过程
- 随机输入十个数,采用直接插入进行排序
- Tomcat的配置文件 -- server.xml(二)
- UIPageControl
- js字符串的各种格式的转换 ToString,Format
- 图像矩的概念