首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS :无法获得用户电子邮件地址

iOS :无法获得用户电子邮件地址
EN

Stack Overflow用户
提问于 2012-06-27 15:36:01
回答 1查看 4.7K关注 0票数 6

我想获得用户邮件地址,如下面的线程所示:Getting user's default email address in Cocoa

但当我试着:

代码语言:javascript
复制
NSString *theEmailAddressWeWantToObtain = @"";
ABPerson *aPerson = [[ABAddressBook sharedAddressBook] me];
ABMultiValue *emails = [aPerson valueForProperty:kABEmailProperty];
if([emails count] > 0)
        theEmailAddressWeWantToObtain = [emails valueAtIndex:0];

我有这样的错误:

  • 未声明标识符“aPerson”的使用
  • 未声明标识符“ABAddressBook”的使用
  • 未知类型的“ABMultiValue”

我链接了AddressBook和AddressBookUI,并导入了AddressBook/AddressBook.h

怎么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-27 16:20:02

--以下是对代码的更正

代码语言:javascript
复制
NSString *theEmailAddressWeWantToObtain = @"";
ABPerson *aPerson = [[ABAddressBook sharedAddressBook] me];
ABMultiValueRef *emails = [aPerson valueForProperty:kABEmailProperty]; //No such thing as ABMultiValue; it's ABMultiValueRef
if(ABMultiValueGetCount(emails) > 0) //"emails" is not an array, so you can't use the "count" method
    theEmailAddressWeWantToObtain = [emails valueAtIndex:0];

我不太熟悉键值编码,所以我不确定您的方法与此相关。

,我就是这样做的,

电子邮件ABMultiValueRef中存储了三个电子邮件地址:家庭、工作和其他电子邮件。尝试使用以下代码获取家庭电子邮件:

代码语言:javascript
复制
NSString *email;

ABRecordRef currentPerson = (__bridge ABRecordRef)[[PSAddressBook arrayOfContacts] objectAtIndex:identifier];
ABMultiValueRef emailsMultiValueRef = ABRecordCopyValue(currentPerson, kABPersonEmailProperty);

NSUInteger emailsCount;    
//Goes through the emails to check which one is the home email
for(emailsCount = 0; emailsCount <= ABMultiValueGetCount(emailsMultiValueRef);emailsCount++){ 
    NSString *emailLabel = (__bridge_transfer NSString *)ABMultiValueCopyLabelAtIndex (emailsMultiValueRef, emailsCount);

    if([emailLabel isEqualToString:@"Home"]){

        if ((__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(emailsMultiValueRef, emailsCount) != NULL){

            email = (__bridge_transfer NSString *)ABRecordCopyValue(currentPerson, kABPersonEmailProperty);
        }   

        //If the last name property does not exist
        else{

            email = @"NULL";
        }
    }
}

CFRelease(emailsMultiValueRef);

如果您对代码有任何疑问,只需在注释中询问即可。希望这能有所帮助!

编辑:

代码中提到的PSAddressBook类可以在这里找到:https://github.com/pasawaya/PSAddressBook

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11229967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档