¿Cómo utilizar el método dataWithContacts en CNContactVCardSerialization?

Estoy intentando get el object NSData con la representación vCard del contacto. Mi código:

let contactStore = CNContactStore() let fetchRequest = CNContactFetchRequest(keysToFetch: [CNContactGivenNameKey, CNContactFamilyNameKey]) var contacts = [CNContact]() var vcard = NSData() do{ try contactStore.enumerateContactsWithFetchRequest(fetchRequest) { (contact, status) -> Void in self.fetchRequest.unifyResults = true self.contacts.append(contact)} } catch { print("Error \(error)") } do { try vcard = CNContactVCardSerialization.dataWithContacts(contacts) } catch { print("Error \(error)") } 

Pero tengo un error:

Excepción escribiendo contactos en vCard (datos): No se solicitó una propiedad cuando se buscó el contacto. Error NilError.

Entiendo que el error en el acceso a los contactos, pero ¿cómo solucionarlo?

Encontré la solución y funciona:

 let contactStore = CNContactStore() var contacts = [CNContact]() var vcardFromContacts = NSData() let fetchRequest = CNContactFetchRequest(keysToFetch:[CNContactVCardSerialization.descriptorForRequinetworkingKeys()]) do{ try contactStore.enumerateContactsWithFetchRequest(fetchRequest, usingBlock: { contact, cursor in self.contacts.append(contact)}) } catch { print("Get contacts \(error)") } // Returns the vCard representation of the specified contacts do { try vcardFromContacts = CNContactVCardSerialization.dataWithContacts(contacts) } catch { print("vcardFromContacts \(error)") } 

Pero, cuando vuelvo a devolver los contactos de los datos vCard:

 do { try contactsFromVcard = CNContactVCardSerialization.contactsWithData(vcardFromContacts) } catch { print("contactsFromVcard \(error)") } 

contacto de campo imageData tiene nil. Aunque no es nada.