2012-01-31 17 views
4

我知道如何從一個ABRecordRef獲取電話號碼,但我現在要的是還可以獲得數的類型,即其標籤爲一個字符串:如何閱讀電話簿號碼標籤?

const CFStringRef kABPersonPhoneIPhoneLabel; 
const CFStringRef kABPersonPhoneMainLabel; 
const CFStringRef kABPersonPhoneHomeFAXLabel; 
const CFStringRef kABPersonPhoneWorkFAXLabel; 
const CFStringRef kABPersonPhonePagerLabel; 

這裏是我得到的數字:

//get all phone numbers     
NSArray *phoneNumbersArray = (NSArray*)ABMultiValueCopyArrayOfAllValues(phoneNumberProperty); 
NSInteger numbersCounter = 0; 
for(numbersCounter = 0; numbersCounter < [phoneNumbersArray count]; numbersCounter++) 
{ 
    NSString currentPhoneNumber = [phoneNumbersArray objectAtIndex:indexPhoneNumber]; 

     // here i would like to read the type of phone number 
     // NSLog(@"NumberType:%@",numberType);      
} 

我試過各種事情,我讀過的ABPerson Reference,我不知道如何獲得的電話號碼類型?

回答

15

我必須弄清楚如何讀取電話號碼的本地化標籤的答案我都準備好身材如何閱讀標籤

//get all phone numbers 
ABMultiValueRef phoneNumberMultiValue = ABRecordCopyValue(currentPerson, kABPersonPhoneProperty); 
NSUInteger phoneNumberIndex; 
for (phoneNumberIndex = 0; phoneNumberIndex < ABMultiValueGetCount(phoneNumberMultiValue); phoneNumberIndex++) { 

    CFStringRef labelStingRef = ABMultiValueCopyLabelAtIndex (phoneNumberMultiValue, phoneNumberIndex); 

    NSString *phoneLabelLocalized = (NSString*)ABAddressBookCopyLocalizedLabel(labelStingRef); 

    NSString *phoneNumber = (NSString *)ABMultiValueCopyValueAtIndex(phoneNumberMultiValue, phoneNumberIndex); 
    //memory management 
    [phoneLabelLocalized release]; 
    [phoneNumber release]; 
    CFRelease(labelStingRef); 
} 
2

這裏的代碼段創建了一個人,增加了2個手機中的聯繫人,然後展示瞭如何在標籤和值對手機性能得到:

ABMutableMultiValueRef multi = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
ABMultiValueIdentifier multivalueIdentifier; 

ABMultiValueAddValueAndLabel(multi, @"(555) 555-1234", 
          kABPersonPhoneMobileLabel, &multivalueIdentifier); 
ABMultiValueAddValueAndLabel(multi, @"(555) 555-2345", 
          kABPersonPhoneMainLabel, &multivalueIdentifier); 

ABRecordRef aRecord = ABPersonCreate(); 

CFErrorRef anError = NULL; 

ABRecordSetValue(aRecord, kABPersonPhoneProperty, multi, &anError); 

CFRelease(multi); 

multi = ABRecordCopyValue(aRecord, kABPersonPhoneProperty); 

for (CFIndex i = 0; i < ABMultiValueGetCount(multi); i++) 
{ 
    CFStringRef phoneNumber, phoneNumberLabel; 

    phoneNumberLabel = ABMultiValueCopyLabelAtIndex(multi, i); 
    phoneNumber  = ABMultiValueCopyValueAtIndex(multi, i); 

    NSLog(@"%@ %@", (NSString *) phoneNumberLabel, (NSString *) phoneNumber); 

    CFRelease(phoneNumberLabel); 
    CFRelease(phoneNumber); 
} 

CFRelease(aRecord); 

CFRelease(multi); 

在它的代碼遍歷所有的多值,並分別使用ABMultiValueCopyLabelAtIndexABMultiValueCopyValueAtIndex來提取標籤和數字。

+0

謝謝。 – 2012-02-01 07:34:29