有没有人成功地使用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;
    } …有没有人有一个如何从iOS 4+中的ABAddressBook获取特定ABSource的示例?