Mi trovo in una situazione in cui ABAddressBookGetPersonCount restituisce -1. Il tester mi assicura che ci sono contatti nella rubrica. Tutti i portatili utilizzano iOS 6.0.1.ABAddressBookGetPersonCount restituisce -1 in iOS
Ecco il codice:
NSMutableDictionary *myAddressBook = [[NSMutableDictionary alloc] init];
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
int numEntries = ABAddressBookGetPersonCount(addressBook);
if (numEntries == 0)
{
NSString *title = NSLocalizedString(@"error", nil);
NSString *description = NSLocalizedString(@"error_empty_contacts", nil);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
message:description
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
return;
}
NSLog(@"emails: found %d", numEntries);
io non sono in grado di riprodurre questo su uno dei miei telefoni, ma il tester ha provato su 3 portatili. Funziona correttamente su un iPhone 5, ma non su un 4 o 3;
Non riesco a trovare alcun documento che indichi il valore di -1. Suppongo che sia un errore di qualche tipo, ma cosa?
Sto anche ricevendo -1 in iOS 6 nel caso in cui l'utente non abbia ancora toccato un'opzione nella richiesta di privacy sul primo avvio dell'app. In tal caso, ABAddressBookCreateWithOptions restituisce una rubrica valida, ma ABAddressBookGetPersonCount restituisce -1. Una volta che l'utente ha scelto di consentire o negare l'accesso, ABAddressBookCreateWithOptions restituisce la rubrica effettiva o nulla. Sto usando il -1 return per rilevare se l'utente ha concesso l'accesso. – Nicholas
@Nicholas Il modo corretto per verificare è chiamare la funzione 'ABAddressBookGetAuthorizationStatus' e controllarne il valore di ritorno. – rmaddy
Grazie a @rmaddy. Avevo provato prima ma non riuscivo a ottenere dati affidabili da esso. Ora che so di più su come funziona e su come testarlo, sembra darmi quello che ho bisogno di sapere. La risposta riguardante -1 da ABAddressBookGetPersonCount è ancora valida. È piuttosto chiaro, anche se non documentato, che -1 viene restituito quando ABAddressBookGetAuthorizationStatus restituisce kABAuthorizationStatusNotDetermined. – Nicholas