6

如何获取ABAddressBook源名称以显示它?(我知道枚举kABSourceTypeLocal,,kABSourceTypeExchange...)

我不是指您使用ABRecordCopyValue(source, ABSourceNameProperty)获得的源类型名称,而是在 Apple 的 Contacts-App 中作为表格部分显示的真实名称,例如:“Exchange Google”或“iCloud”

4

1 回答 1

2

如果您查看ABSource Reference,您可以看到它们有一个名为的属性kABSourceNameProperty,其中包含“源名称”。以下是获取所有源名称的方法:

NSMutableArray *sourceNames = [[NSMutableArray alloc] init];
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef sourcesArray = ABAddressBookCopyArrayOfAllSources(addressBook);

for (CFIndex i = 0; i < CFArrayGetCount(sourcesArray); i++) {
    ABRecordRef source = (ABRecordRef)CFArrayGetValueAtIndex(sourcesArray, i);
    CFStringRef sourceName = (CFStringRef)ABRecordCopyValue(ABRecordGetRecordID(source, kABSourceNameProperty);

    if(sourceName){
        [sourceNames addObject: (__bridge_transfer NSString *)sourceName];
    }
}

CFRelease(sourcesArray);
CFRelease(addressBook);

希望这可以帮助!

于 2012-07-02T19:59:30.383 回答