我想像这样获取 ABRecordRef 的电子邮件地址:
ABRecordRef ref = CFArrayGetValueAtIndex( allPeople, i );
NSString *email = [(NSString*) ABRecordCopyValue( ref, kABPersonEmailProperty ) autorelease];
NSLog(@"%@", email);
它返回这个:
_$!<Home>!$_ (0x6840af0) - test@test.com (0x6840cc0)
电子邮件周围的这些东西是什么?我怎样才能摆脱它?谢谢。
最佳答案
kABPersonEmailProperty
类型为 kABMultiStringPropertyType
.没有单一的电子邮件地址属性,一个人可能有一个工作电子邮件地址,一个家庭电子邮件地址等。
您可以使用 ABMultiValueCopyArrayOfAllValues
获取所有电子邮件地址的数组。 :
ABMultiValueRef emailMultiValue = ABRecordCopyValue(ref, kABPersonEmailProperty);
NSArray *emailAddresses = [(NSArray *)ABMultiValueCopyArrayOfAllValues(emailMultiValue) autorelease];
CFRelease(emailMultiValue);
要获取电子邮件地址的标签,请使用 ABMultiValueCopyLabelAtIndex
. “_$!<Home>!$
”是一个特殊常量,定义为 kABHomeLabel
, 还有 kABWorkLabel
.
关于ios - kABPersonEmailProperty 返回奇怪的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6658622/