iphone-common-codes-ccteam源代码 CCAddressBook.m

本文介绍了一个用于访问iOS设备上通讯录的应用程序接口实现。通过这个接口可以获取通讯录中的所有联系人及其分组,同时还提供了获取联系人姓名、电话号码等详细信息的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


//
// CCAddressBook.m
// CCFC
//
// Created by xichen on 11-12-16.
// Copyright 2011年 ccteam. All rights reserved.
//


#import "CCAddressBook.h"


@implementation CCAddressBook


- (id)init
{
self = [super init];
if(self)
{
ABAddressBookRef addressBook = ABAddressBookCreate();
_abAllPeople = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);
_abGroups = (NSArray *)ABAddressBookCopyArrayOfAllGroups(addressBook);
}
return self;
}




- (void)dealloc
{
[_abAllPeople release];
[_abGroups release];
[super dealloc];
}


- (int)getABRecordCount
{
return [_abAllPeople count];
}


- (int)getABGroupCount
{
return [_abGroups count];
}




- (ABRecordRef)getABRecordRefByIndex:(int)index
{
return [_abAllPeople objectAtIndex:index];
}


- (ABRecordID)getABRecordIDByIndex:(int)index
{
return ABRecordGetRecordID([self getABRecordRefByIndex:index]);
}


// 获得通讯录联系人的全名
// 和getFullNameByRecord略有不同,例如,如果通讯录的姓保存的是"陈",名保存的是"曦",那么此得到的
// 是 "陈 曦", getFullNameByRecord得到的是"陈曦"
- (NSString *)getCompositeNameByIndex:(int)index
{
return [(NSString *)ABRecordCopyCompositeName([self getABRecordRefByIndex:index]) autorelease];
}


- (NSMutableArray *)getPhoneNumberArrByIndex:(int)index
{
ABRecordRef ref = [self getABRecordRefByIndex:index];
// 获取号码数组
ABMultiValueRef tempArr = (ABMultiValueRef)ABRecordCopyValue(ref, kABPersonPhoneProperty);
if(!tempArr)
{
return nil;
}

NSMutableArray *phoneArr = [NSMutableArray new];
for(int i = 0; i < ABMultiValueGetCount(tempArr); ++i)
{
NSString *phoneNo = (NSString *)ABMultiValueCopyValueAtIndex(tempArr, i);
[phoneArr addObject:phoneNo]; // 依次将号码加入新数组中
CFRelease(phoneNo);
}

CFRelease(tempArr);
return [phoneArr autorelease];
}


// 根据ABRecordRef获取联系人姓名全称
- (NSString *)getFullNameByRecord:(ABRecordRef)record
{
NSString *firstName = (NSString *)ABRecordCopyValue(record, kABPersonFirstNameProperty);
NSString *midName = (NSString *)ABRecordCopyValue(record, kABPersonMiddleNameProperty);
NSString *lastName = (NSString *)ABRecordCopyValue(record, kABPersonLastNameProperty);


if(firstName == nil)
firstName = @"";
if(midName == nil)
midName = @"";
if(lastName == nil)
lastName = @"";

CFRelease(firstName);
CFRelease(lastName);
NSArray *languages = [NSLocale preferredLanguages];
NSString *langName = [languages objectAtIndex:0];
// 不需要使用 MiddleName
if([langName isEqualToString:@"en"])
return [NSString stringWithFormat:@"%@ %@", firstName, lastName];
else if([langName isEqualToString:@"zh-Hans"])
return [NSString stringWithFormat:@"%@%@", lastName, firstName];
else
return [NSString stringWithFormat:@"%@%@%@", firstName, midName, lastName];
}


// 根据index获取联系人姓名全称
- (NSString *)getFullNameByIndex:(int)index
{
ABRecordRef ref = [self getABRecordRefByIndex:index];
return [self getFullNameByRecord:ref];
}




@end




googlecode链接地址(会有更新):[url]http://code.google.com/p/iphone-common-codes-ccteam/source/browse/trunk/CCFC/files/CCAddressBook.m[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值