Swift - Datos de imagen del código QR de CIImage / Cómo representar la salida de CIFilter

He estado teniendo este problema por un tiempo y miré docenas de respuestas aquí y parece que no puedo encontrar nada que ayude.

Guió

Estoy generando un código QR en el lado de iOS de mi aplicación y quiero que este código QR se envíe a la extensión WatchKit que estoy desarrollando actualmente.

Cómo estoy generando el código QR
func createQR(with string: String) {

    if let filter = CIFilter(name: "CIQRCodeGenerator") {

        //set the data to the contact data
        filter.setValue(string, forKey: "inputMessage")
        filter.setValue("L", forKey: "inputCorrectionLevel")

        if let codeImage = filter.outputImage {
            return UIImage(ciImage: codeImage);
        }
    }
}
Lo que quiero a continuación

Quiero obtener los datos de la imagen QR para poder enviarlos a la aplicación Apple Watch, así:

let data = UIImagePNGRepresentation(QRCodeImage);

Pero Esto siempre devuelvenil porque no hay datos de imagen que respalden la salida del filtro.

Nota Sé que no hay datos asociados con la imagen CI porque no se ha procesado y ni siquiera tiene datos asociados porque es solo la salida del filtro. @ No sé cómo evitar esto porque soy bastante nuevo en el procesamiento de imágenes y demás. : /

Lo que he probadoCreando uncgImage desde elfilter.outputImage
func createQR(with string: String) {
    if let filter = CIFilter(name: "CIQRCodeGenerator") {

        //set the data to the contact data
        filter.setValue(contactData, forKey: "inputMessage")
        filter.setValue("L", forKey: "inputCorrectionLevel")

        if let codeImage = filter.outputImage {
            let context = CIContext(options: nil)
            if let cgImage = context.createCGImage(codeImage, from: codeImage.extent) {
                self.QRCode = UIImage(cgImage: cgImage)
            }
        }
    }
}

Pero esto no funciona, no parece, porque la imagen en la vista está en blanco.

Creando un CIImage en blanco como imagen de entrada
func update(with string: String) {
    let blankCiImage = CIImage(color: .white) //This probably isn't right...
    if let filter = CIFilter(name: "CIQRCodeGenerator") {

        filter.setValue(contactData, forKey: "inputMessage")
        filter.setValue("L", forKey: "inputCorrectionLevel")
        filter.setValue(blankCiImage, forKey: kCIInputImageKey)

        if let codeImage = filter.outputImage {
            let context = CIContext(options: nil)
            if let cgImage = context.createCGImage(codeImage, from: codeImage.extent) {
                self.contactCode = UIImage(cgImage: cgImage)
                print(self.contactCode!)
                print(UIImagePNGRepresentation(self.contactCode!))
            }
        }
    }
}

Esto tampoco funciona: pensé en agregarle una imagen en blanco y luego hacer el filtro encima, pero probablemente no lo estoy haciendo bien.

Mi met

Literalmente solo para obtenga los datos del código QR generado. La mayoría de los hilos sugierenUIImage(ciImage: output), pero esto no tiene ningún dato de respaldo.

Si alguien pudiera ayudarme con esto, sería genial. Y cualquier explicación sobre cómo funciona también sería maravillosa.

Editar No creo que sea lo mismo que el duplicado marcado: el duplicado marcado se trata de editar una imagen existente utilizando filtros CI y obtener esos datos, y se trata de una imagen que se crea únicamente a través del filtro CI sin imagen de entrada: QR Códigos la otra respuesta no se relacionaba completamente.

Respuestas a la pregunta(1)

Su respuesta a la pregunta