And*_*rei 3 iphone exchange-server objective-c addressbook
一些用户的iPhone联系人中有多个地址簿,因为他们使用例如Exchange Server进行了不同的同步连接.
如何获得所有这些不同的地址簿?我有兴趣获取保存这些不同地址簿的名称并访问其联系信息.
谢谢!
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef sourcesArray = ABAddressBookCopyArrayOfAllSources(addressBook);
for (CFIndex i = 0; i < CFArrayGetCount(sourcesArray); i++) {
ABRecordRef source = (ABRecordRef)CFArrayGetValueAtIndex(sourcesArray, i);
ABRecordID sourceID = ABRecordGetRecordID(source);
CFNumberRef sourceType = (CFNumberRef)ABRecordCopyValue(source, kABSourceTypeProperty);
CFStringRef sourceName = (CFStringRef)ABRecordCopyValue(source, kABSourceNameProperty);
NSLog(@"source id=%d type=%d name=%@", sourceID, [(NSNumber *)sourceType intValue], sourceName);
CFRelease(sourceType);
if (sourceName != NULL) CFRelease(sourceName); // some source names are NULL
}
CFRelease(sourcesArray);
CFRelease(addressBook);
Run Code Online (Sandbox Code Playgroud)
请注意,从iOS 4开始,并非所有源都返回名称.您可以根据类型提供自己的名称.
使用ABAddressBookCopyArrayOfAllPeopleInSource(addressBook, source)得到的源项.
| 归档时间: |
|
| 查看次数: |
5564 次 |
| 最近记录: |