Guardar la dirección de contacto en los resultados de contacto unificado en (CNErrorDomain error 500)

Hay un error extraño en mi aplicación para el que no puedo encontrar soluciones / soluciones. Por alguna razón, puedo guardar una dirección en un contacto que no está unificado con un perfil social (Facebook, Twitter, etc.). Sin embargo, cuando intento agregar una dirección para mi contacto que está unificada con Facebook o Twitter, aparece un extraño error de guardado:

The operation couldn’t be completed. (CNErrorDomain error 500.)

Aquí hay algunos de los códigos que estoy usando:

    if mutableContact.isKeyAvailable(CNContactPostalAddressesKey) {
        var postalAddresses = [CNLabeledValue<CNPostalAddress>]()

        for address in self.contactAddresses {
            let postalAddress: CNLabeledValue<CNPostalAddress> = CNLabeledValue(label: CNLabelOther, value: address)
            postalAddresses.append(postalAddress)
        }

        mutableContact.postalAddresses = postalAddresses
    }

    let saveRequest = CNSaveRequest()

    if isNewContact {
        saveRequest.add(mutableContact, toContainerWithIdentifier: nil)
    } else {
        saveRequest.update(mutableContact)
    }

    do {
        try contactStore.execute(saveRequest)
    } catch let error as NSError {
        print(error.localizedDescription)
        let alertController = UIAlertController(title: "Failed to save/update contact!", message: "Unfortunatly, the app couldn't add or make modifications to your contact. Please try again or use the Contacts app to preform changes.", preferredStyle: .alert)
        let cancelAction = UIAlertAction(title: "Okay", style: .cancel) {
            action in
            self.dismiss(animated: true, completion: nil)
        }
        alertController.addAction(cancelAction)
        self.present(alertController, animated: true, completion: nil)
    }

Respuestas a la pregunta(2)

Su respuesta a la pregunta