は、私はこのようなABRecordRefの電子メールアドレスを取得するためにトリング午前返しkABPersonEmailPropertyは奇妙なもの
電子メールの周りにこのようなものは何_$!<Home>!$_ (0x6840af0) - [email protected] (0x6840cc0)
?どのように私はそれを取り除くことができますか?ありがとう。
は、私はこのようなABRecordRefの電子メールアドレスを取得するためにトリング午前返しkABPersonEmailPropertyは奇妙なもの
電子メールの周りにこのようなものは何_$!<Home>!$_ (0x6840af0) - [email protected] (0x6840cc0)
?どのように私はそれを取り除くことができますか?ありがとう。
kABPersonEmailProperty
はタイプkABMultiStringPropertyType
です。あなたはABMultiValueCopyArrayOfAllValues
を使用して、すべての電子メールアドレスの配列を取得することができ など、そこには単一の電子メールアドレスのプロパティがありません、人は仕事のための電子メールアドレスを持っているかもしれませんが、家のための1:
ABMultiValueRef emailMultiValue = ABRecordCopyValue(ref, kABPersonEmailProperty);
NSArray *emailAddresses = [(NSArray *)ABMultiValueCopyArrayOfAllValues(emailMultiValue) autorelease];
CFRelease(emailMultiValue);
のラベルを取得するには電子メールアドレスはABMultiValueCopyLabelAtIndex
です。 "_$!<Home>!$
"はkABHomeLabel
と定義されている特別な定数です。kABWorkLabel
もあります。
これを試してみてください......
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;
基本的に@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;
}
これを 'Swift'に実装するにはどうすれば' CFIndex'をループできますか? –
このメールのタグを知ることはできますか?仕事、個人、その他の場合は? – 88fsantos