您的位置:首页 > 移动开发 > Objective-C

Objective—C通讯录简单编程(源码)

2016-02-27 12:27 260 查看

Objective—C通讯录简单编程(源码)

标签(空格分隔): 小练习

1、准备步骤

建立两个类:Contact和TelBook



2、在main函数中的源码和运行结果

main.m

#import <Foundation/Foundation.h>
#import "Contact.h"
#import "TelBook.h"

int main(int argc, const char * argv[]) {

Contact *c1 = [[Contact alloc] initWithName:@"Mike" telNum:@"111111"];
Contact *c2 = [[Contact alloc] initWithName:@"Joe" telNum:@"222222"];
Contact *c3 = [[Contact alloc] initWithName:@"Kitty" telNum:@"333333"];
Contact *c4 = [[Contact alloc] initWithName:@"Miss" telNum:@"444444"];

// 通讯录
TelBook *tb = [[TelBook alloc] init];

// 添加联系人
[tb addContact:c1];
[tb addContact:c2];
[tb addContact:c3];
[tb addContact:c4];
NSLog(@"添加后的通讯录有:%@",tb.telDict); // 调用- (NSString *)description方法

// 查找
[tb selectContactWithName:@"Kitty"];

// 增加联系人
Contact *c5 = [[Contact alloc] initWithName:@"jone" telNum:@"555555"];
[tb addContact:c5];
NSLog(@"增加后的通讯录有:%@",tb.telDict);

// 修改联系人
[tb updateContactWithName:@"Kitty" telNum:@"666666"];
NSLog(@"修改后的通讯录有:%@",tb.telDict);

// 删除联系人
[tb deleteContactWithName:@"Mike"];
NSLog(@"删除后的通讯录有:%@",tb.telDict);

return 0;
}


运行结果

2016-02-27 16:14:29.606 TELBook[2047:179058] 添加后的通讯录有:{
J =     (
"Joe : 222222"
);
K =     (
"Kitty : 333333"
);
M =     (
"Mike : 111111",
"Miss : 444444"
);
}
2016-02-27 16:14:29.607 TELBook[2047:179058] 查找的联系人是:Kitty : 333333
2016-02-27 16:14:29.607 TELBook[2047:179058] 增加后的通讯录有:{
J =     (
"Joe : 222222",
"jone : 555555"
);
K =     (
"Kitty : 333333"
);
M =     (
"Mike : 111111",
"Miss : 444444"
);
}
2016-02-27 16:14:29.607 TELBook[2047:179058] 修改后的通讯录有:{
J =     (
"Joe : 222222",
"jone : 555555"
);
K =     (
"Kitty : 666666"
);
M =     (
"Mike : 111111",
"Miss : 444444"
);
}
2016-02-27 16:14:29.608 TELBook[2047:179058] 删除后的通讯录有:{
J =     (
"Joe : 222222",
"jone : 555555"
);
K =     (
"Kitty : 666666"
);
M =     (
"Miss : 444444"
);
}
Program ended with exit code: 0


3、在Contact类中的源码

Contact.h

#import <Foundation/Foundation.h>

@interface Contact : NSObject

// 属性
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *telNum;

// 初始化
- (instancetype)initWithName:(NSString *)name
telNum:(NSString *)telNum;

@end


Contact.m

#import "Contact.h"

@implementation Contact

// 初始化
- (instancetype)initWithName:(NSString *)name
telNum:(NSString *)telNum
{
if (self = [super init]) {
_name = name;
_telNum = telNum;
}
return self;
}

// 重写父类方法
- (NSString *)description
{
return [NSString stringWithFormat:@"%@ : %@", _name,_telNum];
}

@end


4、在TelBook类中的源码

TelBook.h

#import <Foundation/Foundation.h>
@class Contact;

@interface TelBook : NSObject

// 属性
@property (nonatomic, retain) NSMutableDictionary *telDict;

// 增加
- (void)addContact:(Contact *)aContact;

// 删除
- (void)deleteContactWithName:(NSString *)name;

// 修改
- (void)updateContactWithName:(NSString *)name
telNum:(NSString *)telNum;

// 查找
- (void)selectContactWithName:(NSString *)name;

// 获取首字母并大写
- (NSString *)getFirstCapitalLetter:(NSString *)str;

@end


TelBook.m

#import "TelBook.h"
#import "Contact.h"

@implementation TelBook

// 重写父类方法
- (instancetype)init
{
if (self = [super init]) {
_telDict = [NSMutableDictionary dictionaryWithCapacity:10];
}
return self;
}

// 获取首字母并大写
- (NSString *)getFirstCapitalLetter:(NSString *)str
{
NSString *firstChar = [[str substringWithRange:NSMakeRange(0, 1)] capitalizedString];
return firstChar;
}

// 增加
- (void)addContact:(Contact *)aContact
{
if (aContact.name.length != 0) {
NSString *firstChar = [self getFirstCapitalLetter:aContact.name];  // 获取首字母并大写
if (_telDict[firstChar] != nil) { // 判断是否有该分组
[_telDict[firstChar] addObject:aContact]; // 如果有就直接添加
}else{
NSMutableArray *groupArr = [NSMutableArray arrayWithObject:aContact]; // 如果没有,创建分组
[_telDict setObject:groupArr forKey:firstChar]; // 将分组添加到字典中并且以firstChar作为key

}
}else{
NSLog(@"姓名不能为空!");
}
}

// 删除
- (void)deleteContactWithName:(NSString *)name
{
if (name.length != 0) {
BOOL flag = NO;
NSString *firstChar = [self getFirstCapitalLetter:name]; // 获取首字母并大写
if (_telDict[firstChar] != nil) { // 判断是否有该分组
for (Contact *c in _telDict[firstChar]) { // 遍历字典,用创建的联系人Contact对象进行接收
if ([c.name isEqualToString:name]) { // 判断是否包含所要删除的名字
flag = YES;
if ([_telDict[firstChar] count] == 1) { // 判断以这个首字母开头的分组中是否只有一个联系人
[_telDict removeObjectForKey:firstChar]; // 如果只有一个,就删除这个首字母开头的分组
}else{
[_telDict[firstChar] removeObject:c]; // 否则删除这个联系人
break;
}
}
}
if (flag == NO) { // 上述判断中没有这个联系人
NSLog(@"没有该联系人,删除失败");
}
}else{
NSLog(@"没有该联系人,删除失败");
}
}else{
NSLog(@"姓名不能为空");
}
}

// 修改
- (void)updateContactWithName:(NSString *)name
telNum:(NSString *)telNum
{
if (name.length != 0) {
BOOL flag = NO;
NSString *firstChar = [self getFirstCapitalLetter:name]; // 获取首字母并大写
if (_telDict[firstChar] != nil) { // 判断是否有该分组
for (Contact *c in _telDict[firstChar]) { // 遍历字典,用创建的联系人Contact对象进行接收
if ([c.name isEqualToString:name]) { // 判断是否包含所要删除的名字
flag = YES;
c.telNum = telNum; // 如果有,就直接修改
}
}
if (flag == NO) { // 上述判断中没有这个联系人
NSLog(@"没有该联系人,无法修改");
}
}else{
NSLog(@"没有该联系人,无法修改");
}
}else{
NSLog(@"没有该联系人,无法修改");
}
}

// 查找
- (void)selectContactWithName:(NSString *)name
{
if (name.length != 0) {
BOOL flag = NO;
NSString *firstChar = [self getFirstCapitalLetter:name]; // 获取首字母并大写
if (_telDict[firstChar] != nil) { // 判断是否有该分组
// 遍历
for (Contact *c in _telDict[firstChar]) { // 遍历字典,用创建的联系人Contact对象进行接收
if ([c.name isEqualToString:name]) {
flag = YES;
NSLog(@"查找的联系人是:%@",c); // 如果有,就直接打印这个联系人
}
}
if (flag == NO) { // 上述判断中没有这个联系人
NSLog(@"没有该联系人!");
}
}else{
NSLog(@"没有该联系人!");
}
}else{
NSLog(@"姓名不能为空!");
}
}

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