OC语言写通讯录Word下载.docx
《OC语言写通讯录Word下载.docx》由会员分享,可在线阅读,更多相关《OC语言写通讯录Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
+(id)addressContactWithName:
-(void)contactInformation;
//按姓名排
-(NSComparisonResult)compareByName:
(AddressContact*)aContact;
//按照年龄
-(NSComparisonResult)compareByAge:
-(NSString*)description;
@end
#import"
AddressContact.h"
@implementationAddressContact
//@synthesizename=_name,gender=_gender,address=_address,groupName=_groupName,number=_number,age=_age;
(NSString*)age{
self=[superinit];
if(self){
_name=name;
_groupName=groupName;
_gender=gender;
_address=address;
_age=age;
_number=number;
}
returnself;
(NSString*)groupName{
self=[superself];
AddressContact*p=[[AddressContactalloc]initWithName:
namegender:
gendernumber:
numberaddress:
addressgroupName:
groupNameage:
age];
returnp;
-(void)contactInformation{
NSLog(@"
%@%@%@%@%@%@"
_name,_gender,_number,_address,_groupName,_age);
-(NSComparisonResult)compareByName:
(AddressContact*)aContact
return[_namecompare:
[aContactname]];
-(NSComparisonResult)compareByAge:
if(_age<
[aContactage]){
returnNSOrderedDescending;
}elseif(_age==[aContactage]){
returnNSOrderedSame;
}else{
returnNSOrderedAscending;
-(NSString*)description{
return[NSStringstringWithFormat:
@"
_name,_gender,_number,_address,_groupName,_age];
@interfaceAddressBook:
NSMutableDictionary*_addressBook;
@property(nonatomic,retain)NSMutableDictionary*addressBook;
//添加联系人到_addressBook中
-(void)addContact:
//获取某个分组的所有联系人并且按姓名升序排序
-(NSArray*)contactsWithGroupName:
//根据电话搜索联系人
-(AddressContact*)searhContactByPhoneNum:
(NSString*)phoneNum;
//按性别找人
-(NSArray*)contactsWithGender:
(NSString*)gender;
//删除某个分组的全部联系人。
-(NSMutableDictionary*)RemoveGropPerson:
(NSString*)strGrup;
//根据姓名删除某个联系人。
-(NSMutableDictionary*)removeOneContact:
(AddressContact*)oneContact;
AddressBook.h"
@implementationAddressBook
-(id)init
//将字典初始化,
_addressBook=[NSMutableDictionarydictionary];
#pragmamark添加联系人
//判断名字,电话号是否为空
if((aContact.name==nil)||(aContact.number==nil)){
联系人添加失败"
);
return;
//取首字母,当做key值
NSString*first=[aContact.namesubstringToIndex:
1];
//判断首字母
if([_addressBookobjectForKey:
first]==nil){
//如果通过first在字典中取不到Value说明没有这个分组存在,那么创建一个分组
//创建可变数组,添加首字母相同的person到数组中
NSMutableArray*tempArr=[[NSMutableArrayalloc]init];
tempArr=[NSMutableArrayarrayWithObject:
aContact];
//添加到字典中,以首字母当做Key值,可变数组当做Value,存入管理字典中
[_addressBooksetObject:
tempArrforKey:
first];
//如果存在这个分组的Value,那么直接添加。
//直接添加联系人
[[_addressBookobjectForKey:
first]addObject:
//获取某个分组的所有联系人并且按姓名升序排序,【这里面可以改为用block排序】
-(NSArray*)contactsWithGroupName:
(NSString*)groupName
NSArray*temp=[_addressBookobjectForKey:
groupName];
//排序compareByName方法已经在联系人类中实现
return[tempsortedArrayUsingSelector:
@selector(compareByName:
)];
//通过电话号码查找联系人。
返回一个联系人的对象。
【改为用block排序】
-(AddressContact*)searhContactByPhoneNum:
(NSString*)phoneNum
//这里的group就是遍历Key的值。
for(NSString*groupin_addressBook){
//AddressContact对象遍历数组[_addressBookobjectForKey:
group]
NSArray*arr=[_addressBookobjectForKey:
group];
for(AddressContact*cinarr){
//判断电话
if([phoneNumisEqualToString:
[cnumber]]){
returnc;
//没有返回nil
returnnil;
-(NSArray*)contactsWithGender:
(NSString*)gender{
//定义可变数组
NSMutableArray*arr=[NSMutableArrayarray];
for(AddressContact*cin[_addressBookobjectForKey:
group]){
//判断性别
if([genderisEqualToString:
[cgender]]){
[arraddObject:
c];
//排序方法compareByAge已经写在了AddressContact中。
[arrsortUsingSelector:
@selector(compareByAge:
returnarr;
(NSString*)strGrup
NSArray*temp=[_addressBookallKeys];
for(NSString*keyintemp)
{
if([keyisEqualToString:
strGrup])
[_addressBookremoveObjectForKey:
key];
return_addressBook;
(AddressContact*)oneContact{
for(NSString*keyin_addressBook){
NSMutableArray*arr=[_addressBookobjectForKey:
for(AddressContact*oneinarr){
if([one.nameisEqualToString:
oneContact.name]){
[arrremoveObject:
one];
NSString+Characters.h"
/*
作业:
实现中等难度通讯录。
需求:
1、定义联系⼈人类AddressContact。
实例变量:
2、在main.m中定义字典,分组管理所有联系人。
分组名为26个⼤写的英⽂字⺟。
3、可以添加联系人对象,如果姓名或电话号码为空,添加失败。
添加联系⼈到匹配的分组。
4、获取某个分组名称下所有联系⼈,并且按照姓名升序排列。
5、从通讯录中根据电话号码搜索联系人。
6、获取所有女性的联系人,并且按照年龄的降序排列。
7、根据姓名删除某个联系人。
8、删除某个分组的全部联系人。
*/
实现通讯录,需求:
1、创建联系人类AddressPerson,联系人可以存储姓名、地址、邮箱、电话号码。
2、创建通讯录AddressBook类。
3、通讯录可以添加联系人。
姓名不能为空。
4、通讯录输出所有联系人。
按照姓名首字母分组,使用字典按首字母存储信息。
5、可以按照姓名、电话号码进行联系人搜索。
6、联系人按姓名排序,要求使用block。
intmain(intargc,constchar*argv[]){
@autoreleasepool{
//A组
AddressContact*per1=[AddressContactaddressContactWithName:
啊呀"
gender:
f"
number:
1111"
address:
sdsd"
groupName:
A"
age:
13"
];
AddressContact*per1_2=[AddressContactaddressContactWithName:
Andongni"
22222"
15"
AddressContact*per1_3=[AddressContactaddressContactWithName:
AoNil"
m"
20"
AddressContact*per2=[AddressContactaddressContactWithName:
Bibo"
1414"
B"
9"
AddressContact*per3=[AddressContactaddressContactWithName:
Cady"
1313"
C"
7"
#pragmamark一、:
以下为存储的示例代码:
【我们通讯录的存储思想就是这样的^_^】
//第一步:
将同一分组的人添加到一个数组中
NSMutableArray*groupA=[NSMutableArrayarray];
//添加组名为A的数据到数组groupA中
[groupAaddObject:
per1];
per1_2];
per1_3];
//添加组名为B的数据到数组groupB中
NSMutableArray*groupB=[NSMutableArrayarray];
[groupBaddObject:
per2];
//添加组名为C的数据到数组groupC中
NSMutableArray*groupC=[NSMutableArrayarray];
[groupCaddObject:
per3];
//第二步:
//将各个数组中的值作为Value,分组名groupName作为Key值,存入字典中
NSMutableDictionary*contactDict=[NSMutableDictionarydictionary];
//[contactDictsetObject:
groupAforKey:
per1.groupName];
[contactDictsetObject:
//跟上面一样;
groupBforKey:
groupCforKey:
//NSLog(@"
contactDict=%@"
contactDict);
#pragmamark二、我们开始封装添加,查找,删除,联系人的方法。
创建AdressBook类用来管理我们操作通讯录的方法。
//AddressBook是一个管理类,他负责对通讯录的操作,和信息的存取。
AddressBook*book=[[AddressBookalloc]init];
AddressContact*per4=[AddressContactaddressContactWithName:
Docter"
1212"
sgfhd"
D"
12"
//存入通讯录。
[bookaddContact:
per4];
per3];
%@"
book.addressBook);
NSArray*ww=[bookcontactsWithGroupName:
======%@"
ww);
C==%@"
[contactDictobjectForKey:
]);
//通过电话号码查找联系人
AddressContact*dd=[booksearhContactByPhoneNum:
dd==%@"
dd);
//按性别排序
AddressContact*per5=[AddressContactaddressContactWithName:
Demaxiya"
888888"
per5];
NSArray*a=[bookcontactsWithGender:
a==%@"
a);
//获取某个分组的所有联系人并且按姓名升序排序
//NSArray*name=[bookcontactsWithGroupName:
per5.groupName];
NSArray*name1=[bookcontactsWithGroupName:
name1);
//NSMutableDictionary*dct=[bookRemoveGroupPerson:
//NSLog(@"
dct=%@"
dct);
NSMutableDictionary*d=[bookremoveOneContact:
d);
NSMutableDictionary*t=[bookRemoveGropPerson:
t);
return0;