Chargement des contacts de l'iPhone se bloque dans Swift

J'essaye de charger les contacts pour mon application. Cela fonctionne bien dans le simulateur. Mais s'écraser dans l'iPhone. Le code que j'utilise:

func getContactNames() { let allContacts = ABAddressBookCopyArrayOfAllPeople(addressBookRef).takeRetainedValue() as Array for record in allContacts { let currentContact: ABRecordRef = record let currentContactName = ABRecordCopyCompositeName(currentContact).takeRetainedValue() as Ssortingng if(currentContactName != "") { println("found \(currentContactName).") } } } 

Cette fonction est correcte et après avoir obtenu peu de contacts, l'application plante avec log:

 fatal error: unexpectedly found nil while unwrapping an Optional value (lldb) 

Je pense que cela est dû à Nom dans les contacts, si j'essaie d'get le numéro de téléphone, ça fonctionne bien .. Je peux voir tous les numéros de téléphone, mais en cas de Nom, je peux voir environ 350 contacts et ensuite les plantages.

Une idée de comment je peux résoudre ça?

Pour tenir count d'une valeur nulle potentielle (ce qui peut arriver lorsque l'logging d'un contact manque un nom), changez

 let currentContactName = ABRecordCopyCompositeName(currentContact).takeRetainedValue() as Ssortingng 

à

 let currentContactName = ABRecordCopyCompositeName(currentContact)?.takeRetainedValue() as? Ssortingng 

Utilisez le code ci-dessus cela fonctionne pour moi

 func readAllPeopleInAddressBook(addressBook: ABAddressBookRef){ /* Get all the people in the address book */ let allPeople = ABAddressBookCopyArrayOfAllPeople( addressBook).takeRetainedValue() as NSArray for person: ABRecordRef in allPeople{ if(ABRecordCopyValue(person, kABPersonFirstNameProperty) != nil){ let firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty).takeRetainedValue() as? Ssortingng println("First name = \(firstName)") } if (ABRecordCopyValue(person, kABPersonLastNameProperty) != nil){ let lastName = ABRecordCopyValue(person, kABPersonLastNameProperty).takeRetainedValue()as? Ssortingng println("Last name = \(lastName)") } } }