實作中等難度通訊錄。需求:
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