Contact.h
#import <Foundation/Foundation.h>
@interface Contact : NSObject
{
@protected
NSString *_name;
NSString *_gender;
NSString *_phoneNumber;
NSString *_address;
NSString *_group;
}
- (void)setName:(NSString *)name;
- (NSString *)name;
- (void)setGender:(NSString *)gender;
- (NSString *)gender;
- (void)setPhoneNumber:(NSString *)phoneNumber;
- (NSString *)phoneNumber;
- (void)setAddress:(NSString *)address;
- (NSString *)address;
- (void)setGroup:(NSString *)group;
- (NSString *)group;
- (instancetype)initWithName:(NSString *)name
phoneNumber:(NSString *)phoneNumber
group:(NSString *)group;
+ (instancetype)contactWithName:(NSString *)name
phoneNumber:(NSString *)phoneNumber
group:(NSString *)group;
- (void)show;
@end
Contact.m
#import "Contact.h"
@implementation Contact
- (void)setName:(NSString *)name
{
_name = name;
}
- (NSString *)name
{
return _name;
}
- (void)setGender:(NSString *)gender
{
_gender = gender;
}
- (NSString *)gender
{
return _gender;
}
- (void)setPhoneNumber:(NSString *)phoneNumber
{
_phoneNumber = phoneNumber;
}
- (NSString *)phoneNumber
{
return _phoneNumber;
}
- (void)setAddress:(NSString *)address
{
_address = address;
}
- (NSString *)address
{
return _address;
}
- (void)setGroup:(NSString *)group
{
_group = group;
}
- (NSString *)group
{
return _group;
}
- (instancetype)initWithName:(NSString *)name
phoneNumber:(NSString *)phoneNumber
group:(NSString *)group
{
self = [super init];
if (self) {
_name = name;
_phoneNumber = phoneNumber;
_group = group;
}
return self;
}
+ (instancetype)contactWithName:(NSString *)name
phoneNumber:(NSString *)phoneNumber
group:(NSString *)group
{
return [[Contact alloc] initWithName:name phoneNumber:phoneNumber group:group];
}
- (void)show
{
NSLog(@"name = %@ gender = %@ phoneName = %@ address = %@ group = %@", _name, _gender, _phoneNumber, _address, _group);
}
@end
AddressBook.h
#import <Foundation/Foundation.h>
@class Contact;
@interface AddressBook : NSObject
{
@protected
NSMutableArray *_allDataMutableArray; // 存放联系人对象
NSString *_verson;
}
- (void)setVerson:(NSString *)verson;
- (NSString *)verson;
// 添加联系人
- (void)addContact:(Contact *)contact;
// 根据姓名搜索联系人
- (Contact *)findContactWithName:(NSString *)name;
// 根据姓名删除联系人
- (void)deletContactWithName:(NSString *)name;
// 显示所有联系人
- (void)showAllContact;
@end
AddressBook.m
#import "AddressBook.h"
#import "Contact.h"
@implementation AddressBook
- (void)setVerson:(NSString *)verson
{
_verson = verson;
}
- (NSString *)verson
{
return _verson;
}
// 重写init方法内部实现可变数组的创建
- (instancetype)init
{
self = [super init];
if (self) {
_allDataMutableArray = [NSMutableArray array];
}
return self;
}
// 添加联系人
- (void)addContact:(Contact *)contact
{
if (contact.name.length == 0 && contact.phoneNumber == 0) {
NSLog(@"姓名或者电话号码为空,添加失败!");
} else {
[_allDataMutableArray addObject:contact];
NSLog(@"添加成功!");
}
}
// 根据姓名搜索联系人
- (Contact *)findContactWithName:(NSString *)name
{
for (Contact *c in _allDataMutableArray) {
[c.name isEqualToString:name];
return c;
}
return nil; // 如果找不到联系人,返回空
}
// 根据姓名删除联系人
- (void)deletContactWithName:(NSString *)name
{
// 快速遍历中删除一个元素之后,结束遍历
for (Contact *c in _allDataMutableArray) {
if ([c.name isEqualToString:name] == YES) {
[_allDataMutableArray removeObject:c];
break;
}
}
}
// 显示所有联系人
- (void)showAllContact
{
for (Contact *c in _allDataMutableArray) {
[c show];
}
}
@end
main.m
#import <Foundation/Foundation.h>
#import "Contact.h"
#import "AddressBook.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 1.创建通讯录
AddressBook *addressBook = [[AddressBook alloc]init];
// 2.创建联系人、并添加
Contact *c1 = [Contact contactWithName:@"aa" phoneNumber:@"1469274283397" group:@"stu"];
[addressBook addContact:c1];
Contact *c2 = [Contact contactWithName:@"baoge" phoneNumber:@"18310074283397" group:@"stu"];
[addressBook addContact:c2];
// 显示所有联系人信息
[addressBook showAllContact];
// 查找联系人
Contact *find = [addressBook findContactWithName:@"aa"];
[find show];
// 删除联系人
NSLog(@"删除之后");
[addressBook deletContactWithName:@"aa"];
[addressBook showAllContact];
}
return 0;
}