从配置文件页面(电话号码,电子邮件地址,照片)中提取联系人变量到iOS电话簿联系人列表

时间:2013-02-12 19:31:59

标签: iphone ios objective-c abpeoplepickerview

我想将应用中用户个人资料中的信息加载到iPhone电话簿/联系人列表中。

我的应用包含用户个人资料,其中包含有关他们所代表的人的各种属性,例如他们的电话号码,姓名,学校,教育程度,电子邮件地址,照片,他们的工作摘要,兴趣等。

我希望能够做到的是,其他用户能够从此个人资料页面中提取(只需点击一下)联系人属性,以便将其导入iPhone联系人列表。

例如,如果我喜欢UserA,并且我想将她添加到我的iPhone联系人列表中,我可以点击“添加到联系人”,然后导入所有UserA的相关个人资料信息(电话号码,电子邮件)地址,街道地址,网址,照片等)并在我的iPhone电话簿中创建UserA作为新联系人。

使用iphone的abpeoplepicker api可以吗?如果是这样,我该如何执行此操作(我在哪里可以参考正确的文档),以及可能的限制/约束/标准是什么?

1 个答案:

答案 0 :(得分:1)

框架:

#import "AddressBook/AddressBook.h"

代码:

- (void) getLocalContacts
{
    ABAddressBookRef addressBook = ABAddressBookCreate( );
    CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople( addressBook );
    CFIndex nPeople = ABAddressBookGetPersonCount( addressBook );

    User *user;
    NSMutableArray *allContacts = [[NSMutableArray alloc] init];

    for ( int i = 0; i < nPeople; i++ )
    {
        ABRecordRef person = CFArrayGetValueAtIndex( allPeople, i );

        ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty);

        if(ABMultiValueGetCount(emails) != 0)
        {
            user = [[User alloc] init];

            CFStringRef fName, lName;
            fName = ABRecordCopyValue(person, kABPersonFirstNameProperty);
            lName  = ABRecordCopyValue(person, kABPersonLastNameProperty);

            CFStringRef email = ABMultiValueCopyValueAtIndex(emails, 0);


            NSData  *imgData = (NSData *)ABPersonCopyImageData(person);



            NSString *firstName = (NSString *) fName;
            NSString *lastName = (NSString *) lName;


            if (firstName.length == 0 && lastName.length != 0){
                user.userName = lastName;
            } 
            else if (firstName.length != 0 && lastName.length == 0){
                user.userName = firstName;
            }
            else if (firstName.length == 0 && lastName.length == 0){
                user.userName = @"";
            }
            else if (firstName.length != 0 && lastName.length != 0){
                user.userName = [NSString stringWithFormat:@"%@ %@", firstName, lastName];
            }


            //user.firstName = (NSString *) firstName;
            user.lastName = @"";

            user.email = (NSString *) email;

            user.firstName = (NSString *) email;

            user.localImage = [UIImage imageWithData:imgData];

            [allContacts addObject:user];

            [user release];

        }
    }

    [DataManager sharedManager].allLocalUsers = allContacts;

    [self hideSpinner];

}