Questo codice ha funzionato correttamente su iOS 5.1 e funziona anche nel simulatore iPhone con iOS 6. Fallisce silenziosamente sul mio iPhone 4 con iOS 6. Il risultato finale è che io non è possibile aggiungere una persona all'app Contatti. Nessuno dei lavori frammenti seguente codice (log segue ogni):Impossibile accedere alle origini dei contatti sul dispositivo in iOS 6
ABRecordRef defaultSource = ABAddressBookCopyDefaultSource(_addressBook);
NSLog(@"2 - defaultSource = %@", defaultSource);
AB: Non è stato possibile compilare dichiarazioni per la query (ABCCopyArrayOfAllInstancesOfClassInSourceMatchingProperties): SELEZIONA ROWID, Nome, ExternalIdentifier, Tipo, ConstraintsPath, ExternalModificationTag, ExternalSyncTag, AccountID, Abilitato, SyncData, MeIdentifier, Funzionalità da ABStore WHERE Enabled =?;
2012-09-24 11: 00: 36,731 QR vCard [193: 907] 2 - defaultSource = (CPRecord: 0x1f59fd50 ABStore)
Quando provo ad aggiungere una persona alla Rubrica ho questa (sembra essere perché la fonte non è valida, anche se sembra che potrebbe essere OK da quanto sopra):
2012-09-24 11: 18: 32.231 QR vCard [220: 907] ABAddressBookAddRecord error = L'operazione couldn essere completato (Errore ABAddressBookErrorDomain 1.)
pensavo di poter ottenere tutte le fonti e poi sceglierne uno, ma il seguente rendimenti del tutto assenti:
CFArrayRef allSources = ABAddressBookCopyArrayOfAllSources (_addressBook);
NSLog(@"2 - allSources = %@", allSources);
AB: non potrebbe compilare dichiarazioni per la query (ABCCopyArrayOfAllInstancesOfClassInSourceMatchingProperties): SELEZIONA ROWID, Nome, ExternalIdentifier, Tipo, ConstraintsPath, ExternalModificationTag, ExternalSyncTag, AccountID, Enabled, SyncData, MeIdentifier, Funzionalità da ABStore WHERE Enabled =?;
2012-09-24 10: 58: 09,908 QR vCard [177: 907] 2 - allSources =()
Ho scoperto che in iOS 6 è necessario PERMESSO da parte dell'utente per aggiungere una persona a AddressBook. Apple ci protegge di nuovo. Aggiunge alla complessità del codice ... –