xyz*_*der 3 iphone abaddressbook ios4
有没有人有一个如何从iOS 4+中的ABAddressBook获取特定ABSource的示例?
iOS 4+提供了新的API,允许用户从ABAddressBook中选择特定的ABSource.这可能很有用,因为某些操作(例如创建ABGroup)在某些源(即Exchange)中不受支持.
"并非所有的源类型都支持组,更引人注目的是,Exchange对组不了解." - http://flavors.me/volonbolon#1a5/tumblr
附加的功能是利用新API获取可用于调用ABGroupCreateInSource()的特定类型的源.
#define CFRELEASE_AND_NIL(x) CFRelease(x); x=nil;
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);
CFTypeRef sourceType = ABRecordCopyValue(currentSource, kABSourceTypeProperty);
BOOL isMatch = mySourceType == [(NSNumber *)sourceType intValue];
CFRELEASE_AND_NIL(sourceType);
if (isMatch) {
resultSource = currentSource;
break;
}
}
CFRELEASE_AND_NIL(addressBook);
CFRELEASE_AND_NIL(sources);
return resultSource;
}
ABRecordRef localSource()
{
return sourceWithType(kABSourceTypeLocal);
}
ABRecordRef exchangeSource()
{
return sourceWithType(kABSourceTypeExchange);
}
ABRecordRef mobileMeSource()
{
return sourceWithType(kABSourceTypeMobileMe);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8203 次 |
| 最近记录: |