【问题标题】:How to get an iPhone address book contact's emails as NSStrings?如何将 iPhone 通讯录联系人的电子邮件作为 NSStrings 获取?
【发布时间】:2009-10-29 18:09:25
【问题描述】:

我知道一封电子邮件可以有多个值,但我不知道如何浏览它们。

我可以正确找到一个人。

ABRecordRef person = // getting a person;
NSString* emails = (NSString *)ABRecordCopyValue(person, kABPersonEmailProperty);

...接下来是什么?如果我尝试打印 emails 变量,我会得到:

Emails: <NSCFType: 0x4018d40>

【问题讨论】:

    标签: iphone objective-c cocoa-touch abaddressbook


    【解决方案1】:

    这是因为电子邮件不应该是一个字符串,而是一个数组。人们可以有很多电子邮件!

    ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty);
    CFStringRef email = ABMultiValueCopyValueAtIndex(emails, <INDEX>);
    NSLog( (NSString *) email);
    

    Here 是一些关于您可以使用 MultiValueLists 执行的操作的文档

    【讨论】:

    • 谢谢!你知道如何获取“电子邮件”数组的大小以便浏览它吗?
    • 我添加了一个文档链接,您可以在其中找到“计数”方法
    • 对于我最终使用的计数:CFIndex count = ABMultiValueGetCount(emails);
    【解决方案2】:

    该条目的类型是ABMultiValue(具体来说,该字段的类型是kABMultiStringProperty)。请参阅"Using Multivalue Lists" 了解如何阅读这些内容。请参阅 Address Book Objective-C Constants Reference 了解每个属性返回的内容。

    另外,请记住 AB 函数受Create Rule 的约束。你有责任释放你从一个函数中获得的对象,其中包含“复制”这个词。

    【讨论】:

      【解决方案3】:

      在 iOS 9 中,新的 Contacts Framework 已弃用 ABFramework:

      我向您展示了一个记录 CNContact 的每个电子邮件地址的示例:

      CNContact * yourContact = //...
      
      for (CNLabeledValue* emailLabeledValue in yourContact.emailAddresses){
          NSLog(@"%@",[emailLabeledValue value]);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多