5

メールに複数の値が存在する可能性があることは知っていますが、それらを参照する方法がわかりません。

私は正しく人を得ることができます。

ABRecordRef person = // getting a person;
NSString* emails = (NSString *)ABRecordCopyValue(person, kABPersonEmailProperty);

... 次は何ですか?emails変数を印刷しようとすると、次のようになります。

Emails: <NSCFType: 0x4018d40>
4

3 に答える 3

16

これは、電子メールが文字列ではなく配列であるべきだからです。人々はたくさんのメールを持つことができます!

ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty);
CFStringRef email = ABMultiValueCopyValueAtIndex(emails, <INDEX>);
NSLog( (NSString *) email);

MultiValueLists でできることに関するいくつかのドキュメントを次に示します。

于 2009-10-29T18:16:20.900 に答える
4

このエントリのタイプは ですABMultiValue(具体的には、このフィールドのタイプは ですkABMultiStringProperty)。これらの読み方については、「複数値リストの使用」を参照してください。各プロパティが何を返すかについては、Address Book Objective-C 定数リファレンスを参照してください。

また、AB 機能はCreate Ruleの影響を受けることに注意してください。「コピー」という単語を含む関数から取得したオブジェクトを解放する責任があります。

于 2009-10-29T18:17:26.610 に答える
1

iOS 9 では、ABFramework は新しいContacts Frameworkに対して廃止されました。

CNContact のすべての電子メール アドレスをログに記録する例を示します。

CNContact * yourContact = //...

for (CNLabeledValue* emailLabeledValue in yourContact.emailAddresses){
    NSLog(@"%@",[emailLabeledValue value]);
}
于 2015-09-21T14:43:18.550 に答える