您的位置:首页 > 其它

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];

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: