1

iPhoneアドレスブックの完全な「個人記録」がデフォルトでどの属性を持っているかを調べようとしています。

APIのどこかに非表示にする必要があります

https://developer.apple.com/library/content/documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Introduction.html#//apple_ref/doc/uid/TP40007744

https://developer.apple.com/documentation/addressbook#//apple_ref/doc/uid/TP40007210

しかし、私は今のところリストを見つけられませんでした。

誰かに属性のリストがあります:名前、名前、電子メール、電話番号、およびエントリのような可能な「非表示」フィールドが作成されました

4

2 に答える 2

2
NSAutoreleasePool* pool  = [[NSAutoreleasePool alloc] init];

ABAddressBookRef addressBook = ABAddressBookCreate();

NSArray *array= (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);

for (id persion in array) 
{
    ABRecordRef record = (ABRecordRef)persion;

    NSString* firstName=(NSString *)ABRecordCopyValue(record, kABPersonFirstNameProperty);
    NSString* lastName=(NSString *)ABRecordCopyValue(record, kABPersonLastNameProperty);

    //do something

    [firstName release];
    [lastName release];


    ABMultiValueRef mulPhone = (ABMultiValueRef) ABRecordCopyValue(record, kABPersonPhoneProperty) ;
    int count = ABMultiValueGetCount(mulPhone);
    for(CFIndex i=0 ; i < count ; i++)
    {
        NSString* phoneLabel = (NSString*) ABMultiValueCopyLabelAtIndex(mulPhone, i) ;        
        NSString* cellPhone =(NSString*) ABMultiValueCopyValueAtIndex(mulPhone, i) ;

        //do something

        [phoneLabel release] ;
        [cellPhone release];
    }
    CFRelease(mulPhone) ;


    ABMultiValueRef mulAddress =(ABMultiValueRef) ABRecordCopyValue(record, kABPersonAddressProperty) ;
    count = ABMultiValueGetCount(mulAddress);
    for(CFIndex i=0 ; i< count ; i++)
    {
        NSString* addressLabel = (NSString*) ABMultiValueCopyLabelAtIndex(mulAddress, i) ;

        CFDictionaryRef dict = (CFDictionaryRef)ABMultiValueCopyValueAtIndex(mulAddress, i);

        NSString* homeStreet  = (NSString*)CFDictionaryGetValue(dict, kABPersonAddressStreetKey);
        NSString* homeCity    = (NSString*)CFDictionaryGetValue(dict, kABPersonAddressCityKey);
        NSString* homeCountry = (NSString*)CFDictionaryGetValue(dict, kABPersonAddressCountryKey);

       //do something
        CFRelease(dict) ;

        [addressLabel release];
    }
    CFRelease(mulAddress) ;



    NSString* company  = (NSString*)ABRecordCopyValue(record, kABPersonOrganizationProperty);
    if (company) {
 //do something
    }
    [company release];



    ABMultiValueRef mulEmail = (ABMultiValueRef)ABRecordCopyValue(record, kABPersonEmailProperty) ;
    count = ABMultiValueGetCount(mulEmail);
    for(CFIndex i=0 ; i<  count; i++)
    {
        NSString* emailLabel = (NSString*)ABMultiValueCopyLabelAtIndex(mulEmail, i) ;
        NSString* email = (NSString*) ABMultiValueCopyValueAtIndex(mulEmail, i) ;

        //do something
        [emailLabel release];
        [email release];


    }
    CFRelease(mulEmail) ;


}
[array release];
CFRelease(addressBook);


[pool release];
于 2012-10-08T10:05:48.713 に答える
0

個人のデフォルト属性:https ://developer.apple.com/documentation/addressbook/address_book_objective_c_constants/default_person_properties

kABFirstNameProperty:名。

kABLastNameProperty:姓。

kABFirstNamePhoneticProperty:名の音声表現。

kABLastNamePhoneticProperty:姓の音声表現。

kABNicknameProperty:ニックネーム。

kABMaidenNameProperty:旧姓。

kABBirthdayProperty:生年月日。

kABBirthdayComponentsProperty:日付コンポーネントとしての誕生日。

kABOrganizationProperty:会社名。

kABJobTitleProperty:役職。

kABHomePageProperty:ホームページ。

kABURLsProperty:Webページ。

kABCalendarURIsProperty:カレンダーURI。

kABEmailProperty:メールアドレス。

kABAddressProperty:番地。

kABOtherDatesProperty:個人に関連付けられた日付。

kABOtherDateComponentsProperty:日付コンポーネントとしての個人に関連付けられた日付。

kABRelatedNamesProperty:人に関連する人の名前。

kABDepartmentProperty:部門名。

kABPersonFlags:アドレスブックアプリケーションのレコードの名前の順序と構成を指定するプロパティ。個人フラグを参照してください。

kABPhoneProperty:一般的な電話番号。

kABInstantMessageProperty:インスタントメッセージングID。

kABNoteProperty:メモ。

kABSocialProfileProperty:ソーシャルネットワークプロファイル。

kABMiddleNameProperty:ミドルネーム。

kABMiddleNamePhoneticProperty:ミドルネームの音声表現。

kABTitleProperty:「Mr。」、「Mrs。」、「General」、「Cardinal」、「Lord」などの肩書き。</ p>

kABSuffixProperty:「Sr。」、「Jr。」、「III。」、「Esq。」などのサフィックス</ p>

また、Personはレコードであるため、https ://developer.apple.com/documentation/addressbook/address_book_objective_c_constants/default_record_propertiesもあります。

kABUIDProperty:このレコードの一意のID。レコードがいくら変更されても、変更されないことが保証されています。レコードへの参照を保存する必要がある場合は、この値を使用してください。

kABCreationDateProperty:レコードが最初に保存された日付。

kABModificationDateProperty:レコードが最後に保存された日付。

properties()は、Personのすべてのプロパティのリストを返す必要があることに注意してください。

于 2017-12-16T11:56:43.700 に答える