ios - 从 CNContactProperty 中提取电子邮件 - iOS 9

标签 ios objective-c cocoa-touch contactpicker cncontact

我有一个 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/

相关文章:

ios - 从 ViewModel 弹出导航 View

objective-c - UITableViewCell 中的 UILabel 在 Interface Builder 中移动时剪辑内容

ios - swift:如何通过 MapKit 在 map 上绘制弧线?

ios - 是否有任何原因导致我的 UITableViewCell 重写 setHighlighted 不会被调用但 UITableViewDelegate 方法会被调用?

iphone - Objective-C的协议(protocol)和类别可以继承吗?

ios - 表格 View 单元格高度动态 + 从 .xib 加载

ios - 如何关闭 iOS 上的特定通知类型

ios - Base64 编码的字符串不会解码 (iOS)

ios - 向下滚动后更改节标题 View

objective-c - 我说的对吗 initWithNibName :bundle is used to manually load nib files and that initWithCoder would be used as an alternative?