代码之家  ›  专栏  ›  技术社区  ›  Greg Maletic

在iPhone通讯簿中查找某人的“工作”电子邮件地址?

  •  5
  • Greg Maletic  · 技术社区  · 15 年前

    有没有办法从iPhone通讯簿中找到某个人的特定电子邮件地址?我知道如何获取一个人的所有电子邮件地址,但不知道如何识别它是什么类型的电子邮件地址(“家”、“工作”等)……也不知道(这可能更可取),也不知道如何直接访问该地址,而无需反复访问所有电子邮件地址。

    谢谢

    1 回复  |  直到 15 年前
        1
  •  15
  •   gerry3    13 年前

    使用ABMultiValue CopyLabelaIndex检查kABWorkLabel的标签。

    // Email address (if only one, use it; otherwise, use the first work email address)
    CFStringRef value, label;
    ABMutableMultiValueRef multi = ABRecordCopyValue(person, kABPersonEmailProperty);
    CFIndex count = ABMultiValueGetCount(multi);
    if (count == 1) {
        value = ABMultiValueCopyValueAtIndex(multi, 0);
        emailAddress = (NSString*)value;
        [emailAddress retain];
        CFRelease(value);
    } else {
        for (CFIndex i = 0; i < count; i++) {
            label = ABMultiValueCopyLabelAtIndex(multi, i);
            value = ABMultiValueCopyValueAtIndex(multi, i);
    
            // check for Work e-mail label
            if (label && CFStringCompare(label, kABWorkLabel, 0) == 0) {
                emailAddress = (NSString*)value;
                [emailAddress retain];
                break;
            }
    
            CFRelease(label);
            CFRelease(value);
        }
    }
    CFRelease(multi);