objective-c - AB 地址簿 ABSourceName

标签 objective-c ios abaddressbook

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

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

最佳答案

如果您查看 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);

希望这对您有所帮助!

关于objective-c - AB 地址簿 ABSourceName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10494897/

相关文章:

iphone - 检测应用程序的首次运行

ios - 如何使用电话号码在地址簿中搜索 ios

ios - 我可以向 ABPerson 添加自定义 URL 吗?

objective-c - 地址簿联系人是否有 "uniqueID"类型的属性?

iphone - 无法将 iOS/iPhone 应用程序构建为 i386 以外的任何应用程序

ios - 在更短的时间内过滤数据

Objective-C ARC __weak 变量引用触发警告 "__weak attribute cannot be specified on an automatic variable"

ios - 当 View Controller 在顶部时调用函数

iphone - 如何从 AVPlayer(不是 AVAudioPlayer)获取持续时间?

ios - 带约束的动画 UIView 框架