天天看點

OC語言實作中等難度通訊錄

實作中等難度通訊錄。需求:

1、定義聯系⼈人類contact。執行個體變量:姓名(拼⾳音,⾸首字⺟母⼤大寫)、性别、電話号碼、 住址、分組名稱、年齡。⽅方法:⾃自定義初始化⽅方法(姓名、電話号碼)、顯⽰示聯系⼈人資訊

2、在main.m中定義字典,分組管理所有聯系⼈人。分組名為26個⼤大寫的英⽂文字⺟母。

3、可以添加聯系⼈人對象,如果姓名或電話号碼為空,添加失敗。添加聯系⼈人到比對的分 組。

4、擷取某個分組名稱下所有聯系⼈人,并且按照姓名升序排列。

5、從通訊錄中根據電話号碼搜尋聯系⼈人。

6、擷取所有⼥女性的聯系⼈人,并且按照年齡的降序排列。

7、根據姓名删除某個聯系⼈人。

8、删除某個分組的全部聯系⼈人。

contact.h

#import

@interface contact : nsobject

@property (nonatomic, retain)nsstring *name;

@property (nonatomic, assign)nsinteger age;

@property (nonatomic, retain)nsstring *sex;

@property (nonatomic, retain)nsstring *phonenumber;

@property (nonatomic, retain)nsstring *addr;

@property (nonatomic, retain)nsstring *group;

- (id)initwithname:(nsstring *)name

age:(nsinteger)age

sex:(nsstring *)sex

phonenumber:(nsstring *)phone;

+ (id)contactwithname:(nsstring *)name

phonenumber:(nsstring *)phone

addr:(nsstring *)addr;

- (nscomparisonresult)sortcontactbyage:(contact *)othercont;

- (nscomparisonresult)sortcontactbyname:(contact *)othercont;

- (void)info;

@end

contact.m

#import "contact.h"

@implementation contact

{

self = [super init];

if (self) {

_name = name;

_age = age;

_sex = sex;

_phonenumber = phone;

}

return self;

addr:(nsstring *)addr

contact *con = [[contact alloc]initwithname:name age:age sex:sex phonenumber:phone];

con.addr = addr;

con.group = [[con.name substringtoindex:1]uppercasestring];

return con;

- (nscomparisonresult)sortcontactbyage:(contact *)othercont

if (self.age > othercont.age) {

return nsordereddescending;

else if (self.age < othercont.age){

return nsorderedascending;

else

return nsorderedsame;

- (nscomparisonresult)sortcontactbyname:(contact *)othercont

if ([self.name compare:othercont.name] > 0) {

else if ([self.name compare:othercont.name] < 0){

- (void)info

nslog(@"name:%@, age:%ld, sex:%@, phone:%@, addr:%@, group:%@", _name, _age, _sex, _phonenumber, _addr, _group);

addressbook.h

//

// addressbook.h

// 07_字典實作通訊錄

// created by zhangzhipeng on 15/4/15.

// copyright (c) 2015年 www.lanou3g.com藍歐3g. all rights reserved.

@interface addressbook : nsobject

@property (nonatomic, retain) nsmutabledictionary *condic;

- (id)init;

- (void)addcontactpersonname:(nsstring *)name

- (void)getallcontactbygroupandsortbynameasceding:(nsstring*)group;

- (void)searchcontactbyphonenumber:(nsstring *)phonenumber;

- (void)getallcontactbysexandsortbynamedescding:(nsstring *)sex;

- (void)deletecontactbyname:(nsstring *)name;

- (void)deletecontactbygroup:(nsstring *)group;

- (void)listallcontact;

addressbook.m

// addressbook.m

#import "addressbook.h"

@implementation addressbook

- (id)init

self.condic = [nsmutabledictionary dictionary];

if (name == nil || [name isequaltostring:@" "] || phone ==nil || [phone isequaltostring:@" "]) {

nslog(@"增加聯系人失敗");

contact *con = [contact contactwithname:name age:age sex:sex phonenumber:phone addr:addr];

nsmutablearray *conarr = [self.condicvalueforkey:con.group];

if (conarr == nil) {

conarr = [nsmutablearray array];

[conarr addobject:con];

[self.condic setobject:conarr forkey:con.group];

else{

- (void)getallcontactbygroupandsortbynameasceding:(nsstring*)group

nsmutablearray *marr = [self.condic valueforkey:group];

[marr sortusingselector:@selector(sortcontactbyname:)];

for (contact *cont in marr) {

[cont info];

- (void)searchcontactbyphonenumber:(nsstring *)phonenumber

nsmutablearray *arrphonenumber = [nsmutablearray array];

for (nsstring *key in self.condic) {

nsmutablearray *marr = [self.condic objectforkey:key];

if ([cont.phonenumber isequaltostring:phonenumber]) {

[arrphonenumber addobject:cont];

for (contact *cont in arrphonenumber) {

- (void)getallcontactbysexandsortbynamedescding:(nsstring *)sex

nsmutablearray *arrsex = [nsmutablearray array];

nsmutablearray *arr = [self.condic valueforkey:key];

for (contact *cont in arr) {

if ([cont.sex isequaltostring:sex]) {

[arrsex addobject:cont];

[arrsex sortusingselector:@selector(sortcontactbyage:)];

for (contact *cont in arrsex) {

- (void)deletecontactbyname:(nsstring *)name

nsmutablearray *arrdelete = [nsmutablearray array];

for ( nsstring *key in self.condic) {

if ([cont.name isequaltostring:name]) {

[arrdelete addobject:cont];

[arr removeobjectsinarray:arrdelete];

- (void)deletecontactbygroup:(nsstring *)group

[self.condic removeobjectforkey:group];

- (void)listallcontact

nsmutablearray *marr = [self.condic valueforkey:key];

for (contact *con in marr) {

[con info];

轉自:http://blog.csdn.net/qq_31810357