OC实现中等难度通讯录
2015-11-07 11:50
232 查看
定义联系人类AddressContact。实例变量:姓名(拼音,首字母大写)、性别、电话号码、住址、分组名称、年龄。方法:自定义初始化方法(姓名、电话号码)、显示联系人
#import <Foundation/Foundation.h>//类声明@interface Contact : NSObject
{
NSString *_name;
NSString *_sex;
NSString *_phoneNum;
NSString *_address;
NSString *_group;
NSString *_age;
}
-(void)setName:(NSString *)name;
-(void)setSex:(NSString *)sex;
-(void)setPhoneNum:(NSString *)phoneNum;
-(void)setAddress:(NSString *)address;
-(void)setGroup:(NSString *)group;
-(void)setAge:(NSString *)age;
-(NSString *)name;
-(NSString *)sex;
-(NSString *)phoneNum;
-(NSString *)address;
-(NSString *)group;
-(NSString *)age;
-(id)initWithname:(NSString *)name
sex:(NSString *)sex
phoneNum:(NSString *)phoneNum
address:(NSString *)address
group:(NSString *)group
age:(NSString *)age;
-(void)print;
+(Contact *)contactWithName:(NSString *)name
sex:(NSString *)sex
phoneNum:(NSString *)phoneNum
address:(NSString *)address
group:(NSString *)group
age:(NSString *)age;
@end
#import "Contact.h" //实现
@implementation Contact
-(void)setName:(NSString *)name
{
_name = name;
}
-(void)setSex:(NSString *)sex
{
_sex = sex;
}
-(void)setPhoneNum:(NSString *)phoneNum
{
_phoneNum = phoneNum;
}
-(void)setAddress:(NSString *)address
{
_address = address;
}
-(void)setGroup:(NSString *)group
{
_group = group;
}
-(void)setAge:(NSString *)age
{
_age = age;
}
-(NSString *)name
{
return _name;
}
-(NSString *)sex
{
return _sex;
}
-(NSString *)phoneNum
{
return _phoneNum;
}
-(NSString *)address
{
return _address;
}
-(NSString *)group
{
return _group;
}
-(NSString *)age
{
return _age;
}
-(id)initWithname:(NSString *)name
sex:(NSString *)sex
phoneNum:(NSString *)phoneNum
address:(NSString *)address
group:(NSString *)group
age:(NSString *)age;
{
if(self =[super init])
{
_name = name;
_sex = sex;
_phoneNum = phoneNum;
_address = address;
_group = group;
_age = age;
}
return self;
}
-(void)print
{
NSLog(@"姓名:%@ , 性别:%@ , 电话号码:%@ , 地址:%@ , 分组:%@ , 年龄:%@ ",_name,_sex,_phoneNum,_address,_group,_age);
}
+(Contact *)contactWithName:(NSString *)name
sex:(NSString *)sex
phoneNum:(NSString *)phoneNum
address:(NSString *)address
group:(NSString *)group
age:(NSString *)age;
{
Contact *ct = [[self alloc]initWithname:name sex:sex phoneNum:phoneNum address:address group:group age:age];
return ct;
}
@end
#pragma mark ------------------通讯录------------------main函数中程序-------------
Contact *ct1 = [Contact contactWithName:@"zhugeliang" sex:@"m" phoneNum:@"110" address:@"shanli" group:@"z" age:@"38"];
Contact *ct2 = [Contact contactWithName:@"zhangfei" sex:@"m" phoneNum:@"119" address:@"tunli" group:@"z" age:@"22"];
Contact *ct3 = [Contact contactWithName:@"guanyu" sex:@"m" phoneNum:@"120" address:@"guangdong" group:@"g" age:@"31"];
Contact *ct4 = [Contact contactWithName:@"diaochan" sex:@"w" phoneNum:@"520" address:@"wuli" group:@"d" age:@"18"];
Contact *ct5 = [Contact contactWithName:@"lishishi" sex:@"w" phoneNum:@"521" address:@"jiyuan" group:@"l" age:@"17"];
Contact *ct6 = [Contact contactWithName:@"xiaoheshang" sex:@"m" phoneNum:@"666" address:@"shiyuan" group:@"x" age:@"22"];
//创建可变数组
NSMutableArray *arrZ = [NSMutableArray arrayWithObjects:ct1,ct2, nil];
NSMutableArray *arrG =[NSMutableArray arrayWithObjects:ct3, nil];
NSMutableArray *arrD =[NSMutableArray arrayWithObjects:ct4, nil];
NSMutableArray *arrL =[NSMutableArray arrayWithObjects:ct5, nil];
//可变字典里放分组
NSMutableDictionary *mutDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:
arrZ,@"z",arrG,@"g",arrD,@"d",arrL,@"l",nil];
//遍历所有联系人打印
for (NSString *str in mutDic)
{
for (Contact *ct in [mutDic objectForKey:str])
{
[ct print];
}
}
NSLog(@"333333333333333333333333333333333333333333333");
//添加联系人
if (([ct6 name] && ![ct6.name isEqualToString:@""])|| (ct6.phoneNum &&[ct6.phoneNum isEqualToString:@""]))
{
NSString *keytemp = [ct6.name substringToIndex:1];//获取要添加对象的名字的首字母,作为key值
if([[mutDic allKeys] containsObject:keytemp]) //判断字典中是否存在key
{
[[mutDic objectForKey:keytemp]addObject:ct6];//如果有key就找到key对应的value值:arr数组 添加联系人
}
else
{
NSMutableArray *ValueArrayTemp = [NSMutableArray arrayWithObjects:ct6, nil];
[mutDic setObject:ValueArrayTemp forKey:keytemp];
//如果没有对应的key 就创建一个key-value 并添加到字典当中
}
NSLog(@"添加成功!!!");
}
else
{
NSLog(@"添加失败!!!");
}
for (NSString *str in mutDic)
{
for (Contact *ct in [mutDic objectForKey:str])
{
[ct print];
}
}
NSLog(@"444444444444444444444444");
//获取某个分组下所有联系人,并按名字升序排序打印
for (NSString *str in mutDic)
//外层for循环遍历mutdic字典 用于查找到 key
{
if ([str isEqualToString:@"z"])//把z分组的所有联系人按姓名升序排序
{
for(int i = 0 ;i < [[mutDic objectForKey:str] count] - 1;i++)
{
for (int j = 0 ; j < [[mutDic objectForKey:str] count]-1-i; j++)
{
// mutDic objectForKey:str 相当于数组 arrZ
//[arrZ objectAtIndex:j] 取小标为j的 元素,即 contact类的联系人
//[NSString str1 compare: NSString str2]比较两个字符串大小,str1>str2 返回值为 1相等为0.小于为 -1
if( [[[[mutDic objectForKey:str] objectAtIndex:j] name] compare:[[[mutDic objectForKey:str] objectAtIndex:j+1] name]])
[[mutDic objectForKey:str] exchangeObjectAtIndex:j withObjectAtIndex:j+1];
}
}
for (Contact *ct in [mutDic objectForKey:str])
{
[ct print];
}
}
}
NSLog(@"555555555555555555555555555555555555");
//从通讯录中根据电话号码搜索联系人信息
for (NSString *str in mutDic)
{
for (Contact *ct in [mutDic objectForKey:str])
{
if([ct.phoneNum isEqualToString:@"120"])
{
[ct print];
}
}
}
NSLog(@"666666666666666666666666666666666666");
//获取通讯录中所有女性联系人,并按年龄降序排序
NSMutableArray *WomanArrayTemp = [NSMutableArray arrayWithCapacity:0];//临时数组放sex= W的联系人
for (NSString *str in mutDic)
{
for (Contact *ct in [mutDic objectForKey:str])
{
if([ct.sex isEqualToString:@"w"])
{
[WomanArrayTemp addObject:ct];
}
}
}
for(int i = 0 ; i < WomanArrayTemp.count -1;i++)
{
for (int j = 0; j< WomanArrayTemp.count - 1- i; j++)
{
if ([[[WomanArrayTemp objectAtIndex:j] age]intValue] < [[[WomanArrayTemp objectAtIndex:j+1] age]intValue])
{
[WomanArrayTemp exchangeObjectAtIndex:j withObjectAtIndex:j+1];
}
}
}
for (Contact *ct in WomanArrayTemp)
{
[ct print];
}
NSLog(@"7777777777777777777777777777");
//根据姓名删除某个联系人
NSMutableArray *mutabelTemp = [NSMutableArray arrayWithCapacity:0];
for (NSString *str in mutDic)
{
for (Contact *ct in [mutDic objectForKey:str])
{
if([ct.name isEqualToString:@"lishishi"])//删除名字为:lishishi的联系人
{
[mutabelTemp addObject:ct];//数组遍历不能增删, 所有把要删除的联系人记录下来,遍历完之后删除
}
}
}
[[mutDic objectForKey:@"l"] removeObjectsInArray:mutabelTemp];
//删除数组用 removeObjectsInArray 删除数组中某个元素用removeObject
//遍历所有联系人
for (NSString *str in mutDic)
{
for (Contact *ct in [mutDic objectForKey:str])
{
[ct print];
}
}
NSLog(@"888888888888888888888888888");
//删除某个分组所有联系人,因为分组是放在字典中,所有可以在遍历的时候删除,而数组遍历时是不能增 删得,方法见第7
[mutDic removeObjectForKey:@"z"];
for (NSString *str in mutDic)
{
for (Contact *ct in [mutDic objectForKey:str])
{
[ct print];
}
}
相关文章推荐
- 再探 Ext JS 6 (sencha touch/ext升级版) 变化篇 (编译命令、滚动条、控制层、模型层、路由)
- UML总结之类图
- STM32F207运用串口空闲中断+DMA接收不定长数据
- C/S和B/S模式的区别
- [转]不再以讹传讹,GET和POST的真正区别
- 解压缩功能的实现--使用XZip与XUnzip
- ListView 和 GridView的OnItemClickListener()失效的又一种可能
- jquery UI Datepicker时间控件的使用方法(终结版)
- (转)hibernate.cfg.xml:The file cannot be validated as there was a connection problem
- Linux压缩与归档
- Android数据库(二)之创建表和LitePal的基本用法
- TableView的优化
- 矩母函数
- 如何查看LINUX下的一个USB设备使用的驱动模块
- 转:关于android webview实践的文章集合
- NSString字符串判断以某个str开头或者以某个str结尾
- iOS(2)-内存管理
- NSURLSession简介
- MyTalkStuffHomeIcon-2
- Scala数据库编程