我有一个 iOS 应用程序,它需要访问联系人选择器 View Controller ,以便允许用户选择联系人属性,例如电子邮件地址/即时消息电子邮件地址的电话号码。
我现在遇到的问题是,我不知道如何解析返回的数据。我已经使用了 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>!$_, value=News_Europe@iEUNS.com> 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类(class)。为了从他们那里获得值(value),比如电子邮件,这样做
CNLabeledValue *emailValue = contactProperty.contact.emailAddresses.firstObject;
NSString *emailString = emailValue.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;
关于ios - 从 CNContactProperty 中提取电子邮件 - iOS 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33064984/