プログラムでアドレス帳から電子メール アドレスを取得する私の方法は、iOS 6 デバイスでは機能しないようです。iOS 5 で動作し、奇妙なことに、iOS 6 シミュレーターでも動作します。ユーザーのアドレス帳から連絡先をプログラムで取得する新しい方法はありますか?
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);
self.contacts = [[NSMutableArray alloc] init];
int contactIndex = 0;
for (int i = 0; i < nPeople; i++) {
// Get the next address book record.
ABRecordRef record = CFArrayGetValueAtIndex(allPeople, i);
// Get array of email addresses from address book record.
ABMultiValueRef emailMultiValue = ABRecordCopyValue(record, kABPersonEmailProperty);
NSArray *emailArray = (__bridge_transfer NSArray *)ABMultiValueCopyArrayOfAllValues(emailMultiValue);
[self.contacts addObject:emailArray];
}
明確にするために、上記はクラッシュせず、結果を返さないだけです。ABAddressBookCopyArrayOfAllPeople が空です。ありがとう!