我正在尝试通过我的 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;
}
CFArrayRef allPeopleInSource = ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, sortOrdering );
NSLog(@"Count allPeopleInSource: %i", CFArrayGetCount(allPeopleInSource));
[sourceTypeRef release];
}
}
编辑 2 月 24 日:
看起来代码有效,但我在从 ExhangeGALs 中计算人数时遇到了问题。
有没有人成功从 ExchangeGAL 中找回人?
MobileMe 来源报告人数统计。
这是来自控制台的日志:
2011-02-24 07:04:32.578 Contacts[10099:307] SourceTypeExchangeGAL
2011-02-24 07:04:32.593 Contacts[10099:307] Count allPeopleInSource: 0
2011-02-24 07:04:32.597 Contacts[10099:307] SourceTypeMobileMe
2011-02-24 07:04:32.641 Contacts[10099:307] Count allPeopleInSource: 151
2011-02-24 07:04:32.646 Contacts[10099:307] SourceTypeExchangeGAL
2011-02-24 07:04:32.652 Contacts[10099:307] Count allPeopleInSource: 0
最佳答案
您希望回访的人是否真的在您的地址簿中?您不应期望 ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering()
返回整个 GAL。那将是巨大的。您应该只期望它返回 ABAddressBookCopyArrayOfAllPeople()
的一个子集。
关于iphone - 如何使用 ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering() 从 ExchangeGal 来源获取人数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5062968/