从CNContactProperty – iOS 9中提取电子邮件

我有一个iOS应用程序,需要访问联系人选择器视图控制器,以允许用户选择联系人属性,如电子邮件地址/ imessage电子邮件地址的电话号码.

我现在遇到的问题是,我无法弄清楚如何解析返回的数据.我已经使用了contactPicker didSelectContactProperty方法,但是我无法解析我需要的数据.

-(void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty {

   CNLabeledValue *test = contactProperty.contact.emailAddresses.firstObject;
   NSLog(@"%@",test);

   NSLog(@"%@",contactProperty.contact.phoneNumbers);
}

如果您运行上面的代码,您会得到以下响应:

2015-10-11 13:30:07.059 Actions[516:212765] <CNLabeledValue: 0x13656d090: identifier=21F2B1B2-8158-466B-9224-E2036CA07D28,label=_$!<Other>!$_,[email protected]> 2015-10-11 13:30:07.061 App_Name[516:212765] (
    "<CNLabeledValue: 0x13672a500: identifier=6697A0E9-3B91-4566-B26E-83B87979F816,label=_$!<Main>!$_,value=<CNPhoneNumber: 0x13672a660: countryCode=gb,digits=08000391010>>" )

多数民众赞成,但如何从中提取我需要的数据呢?为什么NSLog语句以奇怪的格式返回数据?

谢谢你的时间,丹.

解决方法

返回值为 CNLabeledValue类.为了从它们获得价值,比如电子邮件,请执行此操作
CNLabeledValue *emailValue = contactProperty.contact.emailAddresses.firstObject;
Nsstring *emailString = email.value;

如果您想要一个电话号码的值,这就是您检索它的方式

CNLabeledValue *phoneNumberValue = contactProperty.contact.phoneNumbers.firstObject;
CNPhoneNumber *phoneNumber = phoneNumberValue.value;
Nsstring *phoneNumberString = phoneNumber.stringValue;

由于返回的值是CNLabeledValue,因此您还可以检索电话号码或电子邮件标签

Nsstring *emailLabel = emailValue.label; //This may be 'Work','Home',etc.
Nsstring *phoneNumberLabel = phoneNumberValue.label;

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...