1

名簿からすべての連絡先をアプリケーションに取得しています。選択した連絡先からメールアドレスを取得する必要があります。これが私のコードです

shouldContinueAfterSelectingPerson

- (BOOL)peoplePickerNavigationController:

(ABPeoplePickerNavigationController *)peoplePicker

      shouldContinueAfterSelectingPerson:(ABRecordRef)person {


    // Select phone number


    ABMultiValueRef emailProperty = ABRecordCopyValue(person, kABPersonEmailProperty);


    NSString *email = (__bridge NSString *)(emailProperty);

    [self dismissModalViewControllerAnimated:YES];

    self.view.frame = CGRectMake(0, 44, 320, 370);


    return NO;

}

この人たちから私を助けてください、事前に感謝します

以下のログに印刷しています

電子メール文字列はABMultiValueRef0x1eb2ddb0で、値は0です。

4

2 に答える 2

3
CFStringRef value, label;
ABMutableMultiValueRef multi = ABRecordCopyValue(person, kABPersonEmailProperty);
CFIndex count = ABMultiValueGetCount(multi);
if (count == 1)
{
    value = ABMultiValueCopyValueAtIndex(multi, 0);
    emailid = (NSString*) value;
    NSLog(@"self.emailID   %@",emailid);
    CFRelease(value);
}
else
{
    for (CFIndex i = 0; i < count; i++)
    {
        label = ABMultiValueCopyLabelAtIndex(multi, i);
        value = ABMultiValueCopyValueAtIndex(multi, i);

        // check for Work e-mail label
        if (CFStringCompare(label, kABWorkLabel, 0) == 0)
        {
            emailid = (NSString*) value;
            NSLog(@"self.emailID   %@",emailid);
        }
        else if(CFStringCompare(label, kABHomeLabel, 0) == 0)
        {
            emailid = (NSString*) value;
            NSLog(@"self.emailID   %@",emailid);
        }

        CFRelease(label);
        CFRelease(value);
    }
}
CFRelease(multi);
于 2012-10-01T07:11:37.000 に答える
1

メールフォームの連絡先にアクセスするには、以下のコードを追加できます。

-(IBAction)Contact 
{
    ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
    picker.peoplePickerDelegate = self;
        [self presentModalViewController:picker animated:YES];
    [picker release];}
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker {
    [self dismissModalViewControllerAnimated:YES];
 }

- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
    ABMultiValueRef emailMultiValue = ABRecordCopyValue(person, kABPersonEmailProperty);
    NSArray *email = [(NSArray *)ABMultiValueCopyArrayOfAllValues(emailMultiValue) autorelease];
    CFRelease(emailMultiValue);
   [self dismissModalViewControllerAnimated:YES];}
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier{
    return NO;
}
于 2012-10-01T11:54:10.307 に答える