2011-07-12 10 views
8

मैं इस तरह ABRecordRef का ईमेल पता पाने के लिए tring हूँ:kABPersonEmailProperty रिटर्न अजीब सामान

ABRecordRef ref = CFArrayGetValueAtIndex(allPeople, i); 
NSString *email = [(NSString*) ABRecordCopyValue(ref, kABPersonEmailProperty) autorelease]; 
NSLog(@"%@", email); 

यह इस लौटने:

_$!<Home>!$_ (0x6840af0) - [email protected] (0x6840cc0) 

ईमेल चारों ओर इस चीज क्या है? और मैं इससे कैसे छुटकारा पा सकता हूं? धन्यवाद।

उत्तर

31

kABPersonEmailProperty प्रकार kABMultiStringPropertyType की है।

ABMultiValueRef emailMultiValue = ABRecordCopyValue(ref, kABPersonEmailProperty); 
NSArray *emailAddresses = [(NSArray *)ABMultiValueCopyArrayOfAllValues(emailMultiValue) autorelease]; 
CFRelease(emailMultiValue); 

के लेबल पाने के लिए: कोई भी ईमेल पता संपत्ति नहीं है, एक व्यक्ति आदि के काम के लिए एक ईमेल पता, घर के लिए एक, आप ABMultiValueCopyArrayOfAllValues का उपयोग करके सभी ईमेल पतों की एक सरणी प्राप्त कर सकते हैं हो सकता है ईमेल पते, ABMultiValueCopyLabelAtIndex का उपयोग करें। "_$!<Home>!$" एक विशेष स्थिर है जिसे kABHomeLabel के रूप में परिभाषित किया गया है, kABWorkLabel भी है।

+1

और उस ईमेल के टैग को जानना संभव है? अगर काम, व्यक्तिगत, आदि से है ?? – 88fsantos

0

इस बाहर की कोशिश करो ......

ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init]; 
picker.peoplePickerDelegate = self; 
// Display only a person's phone, email, and birthdate 
NSArray *displayedItems = [NSArray arrayWithObjects: 
[NSNumber numberWithInt:kABPersonPhoneProperty], 
[NSNumber numberWithInt:kABPersonEmailProperty], 
[NSNumber numberWithInt:kABPersonBirthdayProperty], nil]; 
picker.displayedProperties = displayedItems; 
1

मूल रूप से @omz उत्तर के लिए अधिक जानकारी। यहां वह कोड है जिसका उपयोग मैंने घर ईमेल और व्यक्ति का नाम निकाला:

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person 
{ 
    ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty); 
    for (CFIndex i = 0; i < ABMultiValueGetCount(emails); i++) { 
     NSString *label = (__bridge NSString *) ABMultiValueCopyLabelAtIndex(emails, i); 
     if ([label isEqualToString:(NSString *)kABHomeLabel]) { 
      NSString *email = (__bridge NSString *) ABMultiValueCopyValueAtIndex(emails, i); 
      _emailTextField.text = email; 
     } 
    } 
    CFRelease(emails); 


    NSString *first = (__bridge NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty); 
    NSString *last = (__bridge NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty); 

    if (first && first.length > 0 && last && last.length > 0) { 
     _nicknameTextField.text = [NSString stringWithFormat:@"%@ %@", first, last]; 
    } else if (first && first.length > 0) { 
     _nicknameTextField.text = first; 
    } else { 
     _nicknameTextField.text = last; 
    } 

    [self dismissModalViewControllerAnimated:YES]; 

    return NO; 
} 
+1

मैं इसे 'स्विफ्ट' में कैसे कार्यान्वित कर सकता हूं मैं 'CFIndex' कैसे लूप कर सकता हूं –

संबंधित मुद्दे