このコードはiOS5.1で正常に機能し、iOS6のiPhoneシミュレーターでも機能します。iOS6を実行しているiPhone4ではサイレントに失敗します。その結果、連絡先アプリに人を追加できなくなります。次のコードスニペットはどちらも機能しません(ログはそれぞれに続きます)。
ABRecordRef defaultSource = ABAddressBookCopyDefaultSource(_addressBook);
NSLog(@"2 - defaultSource = %@", defaultSource);
AB:クエリのステートメントをコンパイルできませんでした(ABCCopyArrayOfAllInstancesOfClassInSourceMatchingProperties):SELECT ROWID、Name、ExternalIdentifier、Type、ConstraintsPath、ExternalModificationTag、ExternalSyncTag、AccountID、Enabled、SyncData、MeIdentifier、Capabilities FROM ABStore WHERE Enabled = ?;
2012-09-24 11:00:36.731 QR vCard [193:907] 2-defaultSource =(CPRecord:0x1f59fd50 ABStore)
アドレス帳に人を追加しようとすると、これが表示されます(上記からは問題ないように見えますが、ソースが無効であるためと思われます)。
2012-09-24 11:18:32.231 QR vCard [220:907]ABAddressBookAddRecordエラー=操作を完了できませんでした。(ABAddressBookErrorDomainエラー1。)
すべてのソースを取得してから1つを選択できると思いましたが、以下では何も返されません。
CFArrayRef allSources = ABAddressBookCopyArrayOfAllSources (_addressBook);
NSLog(@"2 - allSources = %@", allSources);
AB:クエリのステートメントをコンパイルできませんでした(ABCCopyArrayOfAllInstancesOfClassInSourceMatchingProperties):SELECT ROWID、Name、ExternalIdentifier、Type、ConstraintsPath、ExternalModificationTag、ExternalSyncTag、AccountID、Enabled、SyncData、MeIdentifier、Capabilities FROM ABStore WHERE Enabled = ?;
2012-09-24 10:58:09.908 QR vCard [177:907] 2-allSources =()