いくつかのユーザーは、iPhoneの連絡先に複数のアドレス帳を持っています。 Exchangeサーバー。iPhone:iPhone上のすべてのアドレス帳の名前はどうやって取得できますか?
どのようにこれらの異なるアドレス帳をすべて取得することは可能ですか?私はこれらの異なるアドレス帳が保存され、連絡先情報にアクセスするための名前を取得することに興味があります。
ありがとうございました!
いくつかのユーザーは、iPhoneの連絡先に複数のアドレス帳を持っています。 Exchangeサーバー。iPhone:iPhone上のすべてのアドレス帳の名前はどうやって取得できますか?
どのようにこれらの異なるアドレス帳をすべて取得することは可能ですか?私はこれらの異なるアドレス帳が保存され、連絡先情報にアクセスするための名前を取得することに興味があります。
ありがとうございました!
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef sourcesArray = ABAddressBookCopyArrayOfAllSources(addressBook);
for (CFIndex i = 0; i < CFArrayGetCount(sourcesArray); i++) {
ABRecordRef source = (ABRecordRef)CFArrayGetValueAtIndex(sourcesArray, i);
ABRecordID sourceID = ABRecordGetRecordID(source);
CFNumberRef sourceType = (CFNumberRef)ABRecordCopyValue(source, kABSourceTypeProperty);
CFStringRef sourceName = (CFStringRef)ABRecordCopyValue(source, kABSourceNameProperty);
NSLog(@"source id=%d type=%d name=%@", sourceID, [(NSNumber *)sourceType intValue], sourceName);
CFRelease(sourceType);
if (sourceName != NULL) CFRelease(sourceName); // some source names are NULL
}
CFRelease(sourcesArray);
CFRelease(addressBook);
iOS 4以降、すべての情報源が名前を返すわけではありません。タイプに基づいて独自の名前を付けることができます。
ABAddressBookCopyArrayOfAllPeopleInSource(addressBook, source)
を使用して、ソースにエントリを取得します。
iOS上には、一連のC関数でアクセスできる集中型アドレス帳データベースが1つしかありません。ABAddressBookとiOS address book programming guideを参照してください。
そのアドレス帳のグループを参照している可能性があります。その場合、reference on ABGroup
の説明に従ってABAddressBookCopyArrayOfAllGroups
関数を使用してグループのリストを取得できます。
アップルのドキュメントhttp://developer.apple.com/library/ios/#documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Chapters/DirectInteraction.html:以下のリストは、「全体のソートの例を示していますアドレスブックデータベース: "ABAddressBookCopyArrayOfAllPeople'を使用してデータベース全体にアクセスします。メソッド 'ABAddressBookCopyArrayOfAllPeopleInSource'はもっと制限されたバージョンです。http://developer.apple.com/library/ios/#documentation/AddressBook/Reference/ABPersonRef_iPhoneOS/Reference/reference.htmlの' ABPerson'ドキュメントを参照してください。 – user8472
クラッシュしましたCFRelease(sourceType) - ARCを使用します。 – Borzh
ABAddressBookCreate()は推奨されていません。代わりにABAddressBookCreateWithOptions(NULL、NULL)を使用してください。 –