es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No hay coincidencias exactas en la llamada al inicializador con UnsafeMutablePointer.

Estoy intentando crear un UnsafeMutablePointer con un contexto y estoy obteniendo el error “No existen coincidencias precisas en la llamada al inicializador”. No estoy seguro de qué está pasando aquí. Estoy trabajando con esta respuesta: this answer.

“`swift
let contexto = UIGraphicsGetCurrentContext()

var pixeles: Any?

if let data = contexto?.data {
pixeles = UnsafeMutablePointer<cunsignedchar>(data) // No existen coincidencias precisas en la llamada al inicializador
}
“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “No hay coincidencias exactas en la llamada al inicializador” probablemente significa que el inicializador para UnsafeMutablePointer no coincide con el tipo de data. Esto podría ser porque data es un tipo opcional y necesita ser desempaquetado, o porque el tipo de data es diferente de lo que el inicializador está esperando.

    En el fragmento de código proporcionado, data es de tipo UnsafeRawPointer?, por lo que debe ser desempaquetado antes de ser pasado al inicializador. Así es cómo debería verse el código:

    let context = UIGraphicsGetCurrentContext()
    
    var pixels: UnsafeMutablePointer<cunsignedchar>?
    
    if let data = context?.data {
      pixels = UnsafeMutablePointer<cunsignedchar>(mutating: data.assumingMemoryBound(to: CUnsignedChar.self))
    }
    

    Ten en cuenta que en lugar de desempaquetar data de manera forzada, utilizamos el método assumingMemoryBound para convertir el puntero sin procesar a un puntero con tipo. También utilizamos el parámetro mutating en el inicializador ya que queremos modificar los datos apuntados por el puntero.

    ¡Espero que esto ayude!

Comments are closed.