iphone - 无法使用 VCard 表示创建人员

标签 iphone objective-c xcode4.2 addressbook vcf-vcard

我正在使用 XCode 4.2 开发一个应用程序,并且尝试使用 initWithVCardRepresentation 和/或 ABPersonCreatePeopleInSourceWithVCardRepresentation 创建 ABPerson,但我找不到工作示例。有人可以帮忙吗?

我得到了 NSString 格式的 VCard...

谢谢

最佳答案

这是一个完整的示例,它运行完美,它基于最新的 iOS 8。

首先您应该检查授权状态并请求访问权限,如果没有,然后保存 vcard,让我们回顾一下下面的代码:

if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized){
        NSLog(@"Authorized");
        [self addVcardsIntoAddressBook:vcard];
    } else{
        NSLog(@"Not determined");
        ABAddressBookRequestAccessWithCompletion(ABAddressBookCreateWithOptions(NULL, nil), ^(bool granted, CFErrorRef error) {
            if (!granted){
                NSLog(@"Just denied");
                return;
            }
            NSLog(@"Just authorized");
            [self addVcardsIntoAddressBook:vcard];
        });
    }

这是添加电子名片的方法:

- (void)addVcardsIntoAddressBook:(NSData *)vcard {
    CFDataRef vCardData = CFDataCreate(NULL, [vcard bytes], [vcard length]);
    ABAddressBookRef book = ABAddressBookCreate();
    ABRecordRef defaultSource = ABAddressBookCopyDefaultSource(book);
    CFArrayRef vCardPeople = ABPersonCreatePeopleInSourceWithVCardRepresentation(defaultSource, vCardData);
    for (CFIndex index = 0; index < CFArrayGetCount(vCardPeople); index++) {
        ABRecordRef person = CFArrayGetValueAtIndex(vCardPeople, index);
        ABAddressBookAddRecord(book, person, NULL);
        CFRelease(person);
    }
    ABAddressBookSave(book, NULL);

}

关于iphone - 无法使用 VCard 表示创建人员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8837828/

相关文章:

iphone - 在 iOS 中使用日历日作为 UITableView 数据源

iphone - iPhone 开发中的 Objective-C 属性

iphone - 如何检测三角形区域的触摸

version-control - Github - 如何解决冲突

iphone - 我应该将 sqlite 数据库文件写入 Documents 目录还是 Library/Caches?

iphone - 在 iPhone 模拟器中运行应用程序时,如何查看调用的每个方法?

objective-c - cocoa /Obj-c : how to change behavior of tab key inside NSTableView?

objective-c - 旋转 UIImage 固定角度

objective-c - 带有 ARC 的弱局部变量的生命周期

c++ - 如何在 C++ 中使用 XCode 4.2 设置 OpenGL 项目?