有没有人成功地使用ABAddressBook框架搜索链接到iOS设备的Exchange GAL中的名称,或者其他?
我已经设法从存储在设备上的联系人中获取所有名称 - 这很容易 - 但它不包括来自Exchange GAL的名称.
我还设法获得了GAL的ABSource.它的类型是:kABSourceTypeExchangeGAL = kABSourceTypeExchange | kABSourceTypeSearchableMask
这表明源是可搜索的,因为该kABSourceTypeSearchableMask位是set(kABSourceTypeSearchableMask = 0x01000000),但如何搜索它是任何人的猜测?文档几乎不存在.
下面列出了类似的stackoverflow问题,但没有一个为此提供解决方案.
ABAddressBookCopyArrayOfAllPeopleInSource(addressBook, sourceToSearch)总是为包含类型位的源返回一个空数组kABSourceTypeSearchableMask,这表示你必须按名称搜索,而不是返回"所有人",因为全局地址列表中可能有成千上万的人,所以我不会期待它全部归还.
通讯录应用程序允许您按名称搜索并仅显示匹配的内容.在"收件人:"文本字段中输入文本时,Mail应用程序也是如此.
我试图让我的iOS 4地址簿的三个来源(1个MobileMe源和2个*ExchangeGAL源)的人.
NSLog语句总是为ExchangeGAL返回0个人,但返回MobileMe的人数.
通过使用ABAddressBookCopyArrayOfAllSources(addressBook)获取iOS通讯录中的所有源代码后,我尝试按源迭代源以获取每个源的更多信息.
我正确使用ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering吗?
期望在不同的地址簿来源中计算所有人.
-(void)countPeopleInSources
{
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef allSources = ABAddressBookCopyArrayOfAllSources(addressBook);
for (CFIndex i = 0; i < CFArrayGetCount(allSources); i++)
{
ABRecordRef source = (ABRecordRef)CFArrayGetValueAtIndex(allSources, i);
NSNumber *sourceTypeRef = (NSNumber *)((CFNumberRef)ABRecordCopyValue(source, kABSourceTypeProperty));
ABPersonSortOrdering sortOrdering = ABPersonGetSortOrdering();
int sourceType = [sourceTypeRef intValue];
switch (sourceType) {
case kABSourceTypeCardDAV:
NSLog(@"SourceTypeCardDAV");
break;
case kABSourceTypeCardDAVSearch:
NSLog(@"SourceTypeCardDAVSearch");
break;
case kABSourceTypeExchange:
NSLog(@"SourceTypeExchange");
break;
case kABSourceTypeExchangeGAL:
NSLog(@"SourceTypeExchangeGAL");
break;
case kABSourceTypeLDAP:
NSLog(@"SourceTypeLDAP");
break;
case kABSourceTypeLocal:
NSLog(@"SourceTypeLocal");
break;
case kABSourceTypeMobileMe:
NSLog(@"SourceTypeMobileMe");
break;
default:
break;
} …Run Code Online (Sandbox Code Playgroud) 有没有人有一个如何从iOS 4+中的ABAddressBook获取特定ABSource的示例?