2011-08-04 37 views
3

如何从手机的地址簿中选择某个号码?如何从手机的地址簿中选择某个号码?

我从地址簿中获得一个联系人,但只有手机号码被检索到。我应该怎么做才能让用户选择移动/家庭/其他号码?

这里是我的代码:

-(IBAction)pickContact 
{ 
    // creating the picker 
    ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init]; 
    // place the delegate of the picker to the controll 
    picker.peoplePickerDelegate = self; 

    // showing the picker 
    [self presentModalViewController:picker animated:YES]; 
    // releasing 
    [picker release]; 

} 
-(void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker { 
    // assigning control back to the main controller 
    [self dismissModalViewControllerAnimated:YES]; 
} 

-(BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person { 

    Contact *cont=[[Contact alloc] init]; 

    // setting the first name 
    cont.fName = (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty); 

    // setting the last name 
    cont.lastName = (NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty); 

    // setting the number 
    /* 
    this function will set the first number it finds 

    if you do not set a number for a contact it will probably 
    crash 
    */ 



    //ABMultiValueRef multi = ABRecordCopyValue(person, kABPersonPhoneProperty); 

    // cont.number = (NSString*)ABMultiValueCopyValueAtIndex(multi, 0); 
    ABMultiValueRef phones =(NSString*)ABRecordCopyValue(
                 person, kABPersonPhoneProperty); 

    CFIndex numPhoneNums = ABMultiValueGetCount(phones); 
    if(numPhoneNums == 0) { 
     NSLog(@"No number available"); 
     cont.number = @"No number available"; 
    } else { 
     cont.number = (NSString*) ABMultiValueCopyValueAtIndex(phones, 0); 
    } 

...剩下的工作好了。

回答

2

要获得所有类型的电话号码......(人ABRecordRef的一个实例)

NSMutableArray *arPhList = [[NSMutableArray alloc] init]; 
    ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty); 
    for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++) 
    {  
     CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(phones, j); 
     NSString *phoneLabel =(NSString*) ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(phones, j)); 
     NSString *phoneNumber = (NSString *)phoneNumberRef;    
     NSDictionary *dicTemp = [[NSDictionary alloc]initWithObjectsAndKeys:phoneNumber,@"value", phoneLabel,@"label", nil]; 
     [arPhList addObject:dicTemp]; 
} 
0
else { 
     cont.number = (NSString*) ABMultiValueCopyValueAtIndex(phones, **0**); 
    } 

“手机” 拥有所有的电话号码(手机,家庭,传真等)

但您只能使用索引。

您只使用第一个电话号码。 (它不会移动)。

用于循环(numPhoneNums)来访问所有数字。

相关问题