OC通讯录
来源:互联网 发布:域名需要购买吗 编辑:程序博客网 时间:2024/05/17 20:30
1、定义联系⼈人类Contact。实例变量:姓名(拼⾳音,⾸首字⺟母⼤大写)、性别、电话号码、 住址、分组名称、年龄。⽅方法:⾃自定义初始化⽅方法(姓名、电话号码)、显⽰示联系⼈人信息
2、在main.m中定义字典,分组管理所有联系⼈人。分组名为26个⼤大写的英⽂文字⺟母。
3、可以添加联系⼈人对象,如果姓名或电话号码为空,添加失败。添加联系⼈人到匹配的分 组。
4、获取某个分组名称下所有联系⼈人,并且按照姓名升序排列。
5、从通讯录中根据电话号码搜索联系⼈人。
6、获取所有⼥女性的联系⼈人。
7、根据姓名删除某个联系⼈人。
首先, 创建一个父类为NSObject的Contact类
Contact.m
- (instancetype)initWithName:(NSString *)name sex:(NSString *)sex telNumber:(NSString *)telNumber address:(NSString *)address group:(NSString *)group age:(NSInteger)age{
if (self = [superinit]) {
self.name = name;
self.sex = sex;
self.telNumber = telNumber;
self.address = address;
self.group = group;
self.age = age;
}
return self;
}
+ (instancetype)contactWithName:(NSString *)name sex:(NSString *)sex telNumber:(NSString *)telNumber address:(NSString *)address group:(NSString *)group age:(NSInteger)age{
Contact *con = [[Contact alloc] initWithName:name sex:sex telNumber:telNumber address:address group:group age:age];
return [con autorelease];
}
- (void)dealloc{
[_namerelease];
[_sexrelease];
[_telNumber release];
[_addressrelease];
[_grouprelease];
[superdealloc];
}
// 升序
- (NSComparisonResult * )compareX:(Contact * )contact
{
return [self.namecompare:contact.name];
}
然后,创建一个addressBook类,用于实现通讯录方法
addressBook.m
#pragma mark - 初始化字典
- (instancetype)init{
if (self = [superinit]) {
self.dictionary = [NSMutableDictionarydictionary];
}
return self;
}
#pragma mark - 添加联系人
- (void)addContact:(Contact *)contact
{
if ([contact.name isEqualToString:@""] || [contact.nameisEqualToString:@""]) {
NSLog(@"添加失败");
}else {
NSMutableArray *arr = [NSMutableArrayarray];
arr = [self.dictionaryobjectForKey:contact.group];
if (arr == nil) {
NSMutableArray *array = [NSMutableArrayarray];
[self.dictionarysetObject:array forKey:contact.group];
[arrayaddObject:contact];
}else{
[arraddObject:contact];
}
NSLog(@"添加%@成功", contact.name);
}
}
#pragma mark - 通过分组查找联系人
// 获取某个分组名称下所有联系人,并且按照姓名升序排列。
- (void)findGroup:(NSString *)group
{
NSMutableArray *array = [self.dictionaryobjectForKey:group];
NSArray * temp = [NSArray arrayWithArray:[array sortedArrayUsingSelector:@selector(compareX:)]];
for (int i = 0; i < array.count - 1; i++) {
for (int j = 0; j < array.count - 1 - i; j++) {
NSComparisonResult res = [[[array objectAtIndex:j +1] name] compare:[[array objectAtIndex:j] name]];
if (NSOrderedAscending == res) {
[array exchangeObjectAtIndex:jwithObjectAtIndex:j + 1];
}
}
}
for (Contact *c in temp) {
NSLog(@"查看%@组的%@", c.group,c.name);
}
}
#pragma mark - 通过号码查找联系人
- (void)findTelNumber:(NSString *)telNumber{
NSArray *temp = [self.dictionaryallValues];
for (NSMutableArray *arr in temp) {
for (Contact *c in arr) {
if ([c.telNumber isEqualToString:telNumber]) {
NSLog(@"该%@对应联系人为%@", c.telNumber, c.name);
}
}
}
}
#pragma mark - 查找所有女性联系人
- (void)findWoman:(NSString *)sex{
NSArray *temp = [self.dictionaryallValues];
for (NSMutableArray *arr in temp) {
for (Contact *c in arr) {
if ([c.sex isEqualToString:@"woman"]) {
NSLog(@"女性有:%@,年龄为%ld", c.name, c.age);
}
}
}
}
#pragma mark - 删除联系人
- (void)removeName:(NSString *)name{
NSArray *temp = [self.dictionaryallValues];
for (NSMutableArray *arr in temp) {
for (Contact *c in arr) {
if ([c.name isEqualToString:name]) {
NSMutableArray *array = [self.dictionaryobjectForKey:c.group];
[arrayremoveObject:c];
[self.dictionarysetValue:array forKey:c.group];
NSLog(@"删除%@", c.name);
}
}
}
}
最后,在main.m中引头文件实现通讯录即可
Contact *str1 = [ContactcontactWithName:@"Zhangpeng"sex:@"man"telNumber:@"11111"address:@"NewYork"group:@"Z"age:25];
Contact *str2 = [ContactcontactWithName:@"Wuyao"sex:@"woman"telNumber:@"22222"address:@"Beijing"group:@"W"age:22];
Contact *str3 = [ContactcontactWithName:@"Zhangdi"sex:@"man"telNumber:@"33333"address:@"Dalian"group:@"Z"age:23];
Contact *str4 = [ContactcontactWithName:@"Chenpeng"sex:@"man"telNumber:@"44444"address:@"Siping"group:@"C"age:23];
Contact *str5 = [ContactcontactWithName:@"Zhaoboyu"sex:@"woman"telNumber:@"55555"address:@"Harbin"group:@"Z"age:23];
Contact *str6 = [ContactcontactWithName:@"Liujiahong"sex:@"man"telNumber:@"66666"address:@"Lvshun"group:@"L"age:24];
addressBook *arr = [[addressBook alloc] init];
[arr addContact:str1];
[arr addContact:str2];
[arr addContact:str3];
[arr addContact:str4];
[arr addContact:str5];
[arr addContact:str6];
[arr findGroup:@"Z"];
[arr findTelNumber:@"55555"];
[arr findWoman:@"woman"];
[arr removeName:@"Zhaoboyu"];
- OC通讯录
- 通讯录 oc
- OC通讯录
- OC实现简单通讯录
- OC简单通讯录
- OC第三题通讯录
- oc 通讯录作业题
- OC----通讯录实现
- OC实现通讯录
- OC编写中级通讯录
- 实现中等通讯录(OC)
- OC简易通讯录
- OC中级通讯录
- 通讯录OC版
- iOS 通讯录(OC 语言)
- OC 练习-通讯录
- Oc 通讯录的使用
- OC 第六讲 通讯录作业
- Permutations II -- leetcode
- 单链表的建立 C语言实现
- JAVA IO输入输出流部分代码的入门应用
- 为什么要使用Get和Set访问器
- [Codeforces] 474B - Worms
- OC通讯录
- 2015 年 JXNU_ACS 算法组寒假第一次周赛 作答总结
- opencv1.0 打开摄像头
- 覆盖拦截器栈stack中的参数值
- 基于半色调技术的图像打印程序(Image Printing Program Based on Halftoning)
- 关于寄存器操作的指针问题
- LeetCode | #21 Merge Two Sorted Lists
- 年终大学习之MySQL数据库优化学习笔记(三)
- ubuntu 在线安装jdk