获得通讯录中联系人的所有属性 ,看代码:

ABAddressBookRef
addressBook = ABAddressBookCreate();
CFArrayRef
results = ABAddressBookCopyArrayOfAllPeople(addressBook);
for(int i
= 0; i < CFArrayGetCount(results); i++)
{
ABRecordRef
person = CFArrayGetValueAtIndex(results, i);
//读取firstname
NSString
*personName = (NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);
if(personName
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"\n姓名:%@\n",personName];
//读取lastname
NSString
*lastname = (NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty);
if(lastname
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",lastname];
//读取middlename
NSString
*middlename = (NSString*)ABRecordCopyValue(person, kABPersonMiddleNameProperty);
if(middlename
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",middlename];
//读取prefix前缀
NSString
*prefix = (NSString*)ABRecordCopyValue(person, kABPersonPrefixProperty);
if(prefix
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",prefix];
//读取suffix后缀
NSString
*suffix = (NSString*)ABRecordCopyValue(person, kABPersonSuffixProperty);
if(suffix
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",suffix];
//读取nickname呢称
NSString
*nickname = (NSString*)ABRecordCopyValue(person, kABPersonNicknameProperty);
if(nickname
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",nickname];
//读取firstname拼音音标
NSString
*firstnamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonFirstNamePhoneticProperty);
if(firstnamePhonetic
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",firstnamePhonetic];
//读取lastname拼音音标
NSString
*lastnamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonLastNamePhoneticProperty);
if(lastnamePhonetic
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",lastnamePhonetic];
//读取middlename拼音音标
NSString
*middlenamePhonetic = (NSString*)ABRecordCopyValue(person, kABPersonMiddleNamePhoneticProperty);
if(middlenamePhonetic
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",middlenamePhonetic];
//读取organization公司
NSString
*organization = (NSString*)ABRecordCopyValue(person, kABPersonOrganizationProperty);
if(organization
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",organization];
//读取jobtitle工作
NSString
*jobtitle = (NSString*)ABRecordCopyValue(person, kABPersonJobTitleProperty);
if(jobtitle
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",jobtitle];
//读取department部门
NSString
*department = (NSString*)ABRecordCopyValue(person, kABPersonDepartmentProperty);
if(department
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",department];
//读取birthday生日
NSDate
*birthday = (NSDate*)ABRecordCopyValue(person, kABPersonBirthdayProperty);
if(birthday
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",birthday];
//读取note备忘录
NSString
*note = (NSString*)ABRecordCopyValue(person, kABPersonNoteProperty);
if(note
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",note];
//第一次添加该条记录的时间
NSString
*firstknow = (NSString*)ABRecordCopyValue(person, kABPersonCreationDateProperty);
NSLog(@"第一次添加该条记录的时间%@\n",firstknow);
//最后一次修改該条记录的时间
NSString
*lastknow = (NSString*)ABRecordCopyValue(person, kABPersonModificationDateProperty);
NSLog(@"最后一次修改該条记录的时间%@\n",lastknow);
//获取email多值
ABMultiValueRef
email = ABRecordCopyValue(person, kABPersonEmailProperty);
int emailcount
= ABMultiValueGetCount(email);
for (int
x = 0; x < emailcount; x++)
{
//获取emailLabel
NSString*
emailLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(email, x));
//获取email值
NSString*
emailContent = (NSString*)ABMultiValueCopyValueAtIndex(email, x);
textView.text
= [textView.text stringByAppendingFormat:@"%@:%@\n",emailLabel,emailContent];
}
//读取地址多值
ABMultiValueRef
address = ABRecordCopyValue(person, kABPersonAddressProperty);
int count
= ABMultiValueGetCount(address);
for(int
j = 0; j < count; j++)
{
//获取地址Label
NSString*
addressLabel = (NSString*)ABMultiValueCopyLabelAtIndex(address, j);
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",addressLabel];
//获取該label下的地址6属性
NSDictionary*
personaddress =(NSDictionary*) ABMultiValueCopyValueAtIndex(address, j);
NSString*
country = [personaddress valueForKey:(NSString *)kABPersonAddressCountryKey];
if(country
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"国家:%@\n",country];
NSString*
city = [personaddress valueForKey:(NSString *)kABPersonAddressCityKey];
if(city
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"城市:%@\n",city];
NSString*
state = [personaddress valueForKey:(NSString *)kABPersonAddressStateKey];
if(state
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"省:%@\n",state];
NSString*
street = [personaddress valueForKey:(NSString *)kABPersonAddressStreetKey];
if(street
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"街道:%@\n",street];
NSString*
zip = [personaddress valueForKey:(NSString *)kABPersonAddressZIPKey];
if(zip
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"邮编:%@\n",zip];
NSString*
coutntrycode = [personaddress valueForKey:(NSString *)kABPersonAddressCountryCodeKey];
if(coutntrycode
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"国家编号:%@\n",coutntrycode];
}
//获取dates多值
ABMultiValueRef
dates = ABRecordCopyValue(person, kABPersonDateProperty);
int datescount
= ABMultiValueGetCount(dates);
for (int
y = 0; y < datescount; y++)
{
//获取dates
Label
NSString*
datesLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(dates, y));
//获取dates值
NSString*
datesContent = (NSString*)ABMultiValueCopyValueAtIndex(dates, y);
textView.text
= [textView.text stringByAppendingFormat:@"%@:%@\n",datesLabel,datesContent];
}
//获取kind值
CFNumberRef
recordType = ABRecordCopyValue(person, kABPersonKindProperty);
if (recordType
== kABPersonKindOrganization) {
//
it's a company
NSLog(@"it's
a company\n");
} else
{
//
it's a person, resource, or room
NSLog(@"it's
a person, resource, or room\n");
}
//获取IM多值
ABMultiValueRef
instantMessage = ABRecordCopyValue(person, kABPersonInstantMessageProperty);
for (int
l = 1; l < ABMultiValueGetCount(instantMessage); l++)
{
//获取IM
Label
NSString*
instantMessageLabel = (NSString*)ABMultiValueCopyLabelAtIndex(instantMessage, l);
textView.text
= [textView.text stringByAppendingFormat:@"%@\n",instantMessageLabel];
//获取該label下的2属性
NSDictionary*
instantMessageContent =(NSDictionary*) ABMultiValueCopyValueAtIndex(instantMessage, l);
NSString*
username = [instantMessageContent valueForKey:(NSString *)kABPersonInstantMessageUsernameKey];
if(username
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"username:%@\n",username];
NSString*service=
[instantMessageContent valueForKey:(NSString *)kABPersonInstantMessageServiceKey];
if(service
!= nil)
textView.text
= [textView.text stringByAppendingFormat:@"service:%@\n",service];
}
//读取电话多值
ABMultiValueRefphone=
ABRecordCopyValue(person, kABPersonPhoneProperty);
for (int
k = 0; k<ABMultiValueGetCount(phone); k++)
{
//获取电话Label
NSString
* personPhoneLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(phone, k));
//获取該Label下的电话值
NSString
* personPhone = (NSString*)ABMultiValueCopyValueAtIndex(phone, k);
textView.text
= [textView.text stringByAppendingFormat:@"%@:%@\n",personPhoneLabel,personPhone];
}
//获取URL多值
ABMultiValueRef
url = ABRecordCopyValue(person, kABPersonURLProperty);
for (int
m = 0; m < ABMultiValueGetCount(url); m++)
{
//获取电话Label
NSString
* urlLabel = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(url, m));
//获取該Label下的电话值
NSString
* urlContent = (NSString*)ABMultiValueCopyValueAtIndex(url,m);
textView.text
= [textView.text stringByAppendingFormat:@"%@:%@\n",urlLabel,urlContent];
}
//读取照片
NSData
*image = (NSData*)ABPersonCopyImageData(person);
UIImageView
*myImage = [[UIImageView alloc] initWithFrame:CGRectMake(200, 0, 50, 50)];
[myImage
setImage:[UIImage imageWithData:image]];
myImage.opaque
= YES;
[textView
addSubview:myImage];
}
CFRelease(results);
CFRelease(addressBook);