类名:Card
【Card.h】
#import<Foundation/Foundation.h>
@interface Card:NSObject
{
NSString *_contanctName; //联系人
NSString *_phoneNumber; //电话号
}
//初始化方法(构造方法)
-(id)initWithContactName:(Nssting *)name andPhoneNumber:(Nsstring *)number;
//setter方法
-(void)setContactName:(NSString *)name;
-(void)setPhoneNumber:(NSString *)number;
//getter方法
-(NSString *)contactName;
-(NString *)phoneNumber;
//排序名片类对象的规则
-(Bool)isSortByContactName:(Card *)aCard;//按照联系人排序,默认为升序
-(BooL)isSortByphoneNumber:(card *)aCard;//按照电话号排序,默认为升序
//打印Card类对象方法
-(void)printCard;
@end
【Card.m】
#import"Card.h"
@implementation Card
-(id)initWithCintactName:(NSString *)name andPphondNumber:(NSString *)number{
self=[super init];
if(self){
_contactName=name;
_phoneNumber=number;
}
return self;
}
-(void)setContactName:(NSString *)name{
_contactName=name;
}
-(void)setPhoneNumber:(NSString *)number{
_phoneNumber=number;
}
-(NSString *)contactName{
return _contactName;
}
-(NString *)phoneNumber{
return_phoneNumber;
}
-(Bool)isSortByContactName:(Card *)aCard{
if([self contactName] compare:[aCard contactName]]==NSOrderedDescending){
return YES;
}
return No;
}
-(BooL)isSortByphoneNumber:(card *)aCard{
if(self phoneNumber] conpare:[aCard phoneNumber]]==NSOrderedDescending)){
return YES;
}
return NO;
}
-(void)printCard{
{
NSLog(@"contactName=%@,phoneNumber=%@",[self contactName],[self phoneNumber])
}
@end
phone Book电话本类
#import<Foundation/Foundation.h>
[PhoneBook.h]
@interface PhoneBook: NSobjects{
NSString *_masterName; //主机人名
NSMutableArray *_cardList;//存储Card对象的可变数组
//初始化方法(构造方法)
-(id)initWithMasterName:(NSString *)name;
//setter方法
-(void)setMasterName:(NSString *)name;
//getter方法
-(NSString *)masterName;
//添加联系人名片
-(void)addContactCard:(Card *)card;
//删除联系人名片(传入名片地址)
-(void)removeCard:(Card *)card;/
//遍历电话本
-(void)showPhoneBook;
//排序
-(void)sortedByContactName;
-(void)sortedByPhoneNumber;
//测试当前类(类方法)
+(void)testPhoneBook;
}
@end
[PhoneBook.m]
#import"PhoneBook.h"
@implementtation PhoneBook
-(id)initWithMasterName:(NSString *)name{
self=[super init];
if(self){
_masterName=name;
_cardList=[NSMubableArray array];//创建一个可变数组对象
}
return self;
}
-(void)setMasterName:(NSString *)name{
_masterName=name;
}
-(NSString *)masterName{
return masterName;
}
-(void)addContactCard:(Card *)card{
if([_cardList containsObject:aCard]){
NSLog(@"联系人在列表中存在!")
}else{
[_cardList addObject:aCard];
}
-(void)removeCard:(Card *)card{
[_cardList removeObject:aCard;
-(void)showPhoneBook{
for(Card *item in _cardList){
[item printCard];
}
}
-(void)sortedByContactName{
_cardList sortUsingSelector:@selector( isSortByContactName:)];
}
-(void)sortedByPhoneNumber{
_cardList sortUsingSelector:@selector( isSortByPponeNumber::)];
}
+(void)testPhoneBook
{
phoneBook *phoneBook=[phoneBook alloc]initWithMasterName:@"小华];
//创建电话本联人,联系电话
for(NSInteger i=0;i<10;i++){
Card *item=[Card alloc] init];
//联系人随机生成两位数
item setContactName:[NSString stringWithFormat:@"联系人%2li",arc4andom()%100+1]];
//电话号后四位随机生成
item setPhoneNumber:[String StringWithFormat:@"140000%04i',arc4randome()%10000]];
[phoneBook addContactCard:item];
}
//遍历电话本
[phoneBook shwoPhoneBook];
}
【main.h】
#import <Foundation/Foundation.h>
#import<int argc,const char * arg[]){
@autoeleasepool{
NSLog(@"----------排序前--------");
[phoneBook testPhoneBook]
//打印结果(打印10次,随机数部份不一至)
----------排序前--------
contactName = 联系人11,phoneNumber = 14000000033
contactName = 联系人01,phoneNumber = 14000000003
...
NSLog(@"----------按昭名字排序后--------");
[phoneBook sortPhoneBookContactname];
[phoneBook showPhoneBook];
//打印结果(按名字降序排列)
----------按昭名字排序后--------
contactName = 联系人01,phoneNumber = 14000000033
contactName = 联系人11,phoneNumber = 14000000023
...
NSLog(@"----------按照电话排序后--------");
[phoneBook sortPhoneBookByPhoneNumber];
[phoneBook showPhoneBook];
//打印结果
----------按照电话排序后--------
contactName = 联系人11,phoneNumber = 14000000023
contactName = 联系人01,phoneNumber = 14000000033
//删除联系人
[phoneBook removeContactCard:[phoneBook->CardList[3]];
NSLog(@"count =%li",[phoneBook->_cardList count]);
//打印结果:9
[phoneBook showPhoneBook]
打印结果:
contactName = 联系人11,phoneNumber = 14000000023
contactName = 联系人01,phoneNumber = 14000000033
....
//注:电话本中下标为3的元素被删除
}
return 0;
}