6

ABAddressBookソースの名前を取得して表示するにはどうすればよいですか? (私は列挙型を知っています、、kABSourceTypeLocal... kABSourceTypeExchange

ABRecordCopyValue(source, ABSourceNameProperty)で得られる source-type-name という意味ではなく、Apple の Contacts-App にテーブル セクションとして表示される実際の名前です。たとえば、「Exchange Google」や「iCloud」などです。

4

1 に答える 1

2

ABSource Referenceを確認するとkABSourceNameProperty、「ソースの名前」を含むというプロパティがあることがわかります。すべてのソース名を取得する方法は次のとおりです。

NSMutableArray *sourceNames = [[NSMutableArray alloc] init];
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef sourcesArray = ABAddressBookCopyArrayOfAllSources(addressBook);

for (CFIndex i = 0; i < CFArrayGetCount(sourcesArray); i++) {
    ABRecordRef source = (ABRecordRef)CFArrayGetValueAtIndex(sourcesArray, i);
    CFStringRef sourceName = (CFStringRef)ABRecordCopyValue(ABRecordGetRecordID(source, kABSourceNameProperty);

    if(sourceName){
        [sourceNames addObject: (__bridge_transfer NSString *)sourceName];
    }
}

CFRelease(sourcesArray);
CFRelease(addressBook);

お役に立てれば!

于 2012-07-02T19:59:30.383 に答える