kABPersonEmailProperty返回奇怪的东西

sum*_*HAY 8 cocoa-touch abaddressbook ios

我想收到ABRecordRef的电子邮件地址,如下所示:

ABRecordRef ref = CFArrayGetValueAtIndex( allPeople, i );
NSString *email = [(NSString*) ABRecordCopyValue( ref, kABPersonEmailProperty ) autorelease];
NSLog(@"%@", email);
Run Code Online (Sandbox Code Playgroud)

它归还了这个:

_$!<Home>!$_ (0x6840af0) - test@test.com (0x6840cc0)
Run Code Online (Sandbox Code Playgroud)

这封电子邮件的内容是什么?我怎么能摆脱它?谢谢.

omz*_*omz 31

kABPersonEmailProperty是类型的kABMultiStringPropertyType.没有单个电子邮件地址属性,一个人可能有工作的电子邮件地址,一个用于家庭等.您可以使用以下方法获取所有电子邮件地址的数组ABMultiValueCopyArrayOfAllValues:

ABMultiValueRef emailMultiValue = ABRecordCopyValue(ref, kABPersonEmailProperty);
NSArray *emailAddresses = [(NSArray *)ABMultiValueCopyArrayOfAllValues(emailMultiValue) autorelease];
CFRelease(emailMultiValue);
Run Code Online (Sandbox Code Playgroud)

要获取电子邮件地址的标签,请使用ABMultiValueCopyLabelAtIndex." _$!<Home>!$"是一个特殊的常量,定义为kABHomeLabel,也有kABWorkLabel.