2012-05-08 13 views
6

मुझे इसे प्रदर्शित करने के लिए ABAddressBook स्रोत का नाम कैसे प्राप्त किया जा सकता है? (मैं enums पता kABSourceTypeLocal, kABSourceTypeExchange, ...)ABAddressBook ABSourceName

मैं स्रोत प्रकार नाम आप ABRecordCopyValue (स्रोत, ABSourceNameProperty) साथ मिलता है, लेकिन असली नाम जो एप्पल के में दिखाया गया है मतलब यह नहीं है संपर्क-ऐप एक मेज खंड के रूप में, उदाहरण के लिए: "एक्सचेंज Google" या "iCloud"

+0

मेरी तरफ एक ही समस्या है। क्या आप नाम पुनर्प्राप्त करने में सक्षम हैं? –

+0

कोई सफलता? यहां भी वही समस्या है। –

उत्तर

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); 

आशा इस मदद करता है!

+0

यह ऐप्पल के संपर्क यूआई के समान स्रोत नाम नहीं देता है। मेरे लिए, ऐप्पल का "एक्सचेंज", "फेसबुक" और "आईक्लाउड" दिखाता है। जहां उपर्युक्त उत्तर "संपर्क" (सीएनकॉन्टेनर टाइप टाइप), "कार्ड" (सीएनकॉन्टेनर टाइप टाइपर्डवी) और "" (सीएनकॉन्टेनर टाइप टाइपर्डवीवी) –

+0

@ मैटतुही - यह उत्तर तीन साल पहले पोस्ट किया गया था। मैं अपने एड्रेस बुक एपीआई में ऐप्पल के नवीनतम बदलावों के साथ अद्यतित नहीं हूं, इसलिए यदि आप इसे अभी चलाते हैं तो यह संभवतः टूटा/अप्रत्याशित परिणाम होगा। – pasawaya