Kb.*_*Kb. 5 iphone cocoa-touch objective-c ios abaddressbooksource
我试图让我的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];
}
}
Run Code Online (Sandbox Code Playgroud)
编辑FEB24:看起来代码有效,但我有一个问题,让人们从ExhangeGALs计算.
是否已成功从ExchangeGAL检索人员?
MobileMe源报告人数.
以下是Console的日志:
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
Run Code Online (Sandbox Code Playgroud)
尝试使用:
ABRecordRef sourceWithType (ABSourceType mySourceType)
{
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef sources = ABAddressBookCopyArrayOfAllSources(addressBook);
CFIndex sourceCount = CFArrayGetCount(sources);
ABRecordRef resultSource = NULL;
for (CFIndex i = 0 ; i < sourceCount; i++) {
ABRecordRef currentSource = CFArrayGetValueAtIndex(sources, i);
ABSourceType sourceType = [(NSNumber *)ABRecordCopyValue(currentSource, kABSourceTypeProperty) intValue];
if (mySourceType == sourceType) {
resultSource = currentSource;
break;
}
}
return resultSource;
}
ABRecordRef localSource()
{
return sourceWithType(kABSourceTypeLocal);
}
ABRecordRef exchangeSource()
{
return sourceWithType(kABSourceTypeExchange);
}
ABRecordRef mobileMeSource()
{
return sourceWithType(kABSourceTypeMobileMe);
}
Run Code Online (Sandbox Code Playgroud)
您可能会发现这很有帮助:abaddressbook-absource-and-absourcetype
| 归档时间: |
|
| 查看次数: |
2567 次 |
| 最近记录: |