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.

Crash de SwiftUI Preview con await async en iOS 15 si devuelve una estructura con UUID.

Reduje el código a algo muy simple.
Si la estructura tiene un Int está funcionando, si hay un UUID la vista previa se está bloqueando (está funcionando si lo ejecuto en el simulador o en un dispositivo real)

Probado con
iOS 15
Xcode 13.1 y beta 13.2

import SwiftUI
import Combine

struct MyStruct: Codable, Hashable, Identifiable {
    var id: UUID = UUID() //con Int está bien
    var str: String
}

struct ContentView2: View {

    @State private var myStruct: MyStruct = MyStruct(str: "estructura1-inicial")

    var body: some View {
        VStack {
            Text(myStruct.str)
                .onAppear(perform: realizarAlgoEstructura)
        }
    }

    private func realizarAlgoEstructura() {
        Task {
            let recibir = await obtenerAsincronamenteEstructura()
            myStruct = recibir
        }
    }

    private func obtenerAsincronamenteEstructura() async -> MyStruct {
        let str = MyStruct(str: "estructura1-hecha")
        return str
    }
}

struct ContentView2_Previews: PreviewProvider {
    static var previews: some View {
        ContentView2()
    }
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que hay un problema al usar UUID en MyStruct al previsualizar ContentView2. La previsualización se está bloqueando, pero ejecutar el código en el simulador o en un dispositivo real funciona correctamente.

    Este problema ha sido probado con iOS 15 y Xcode 13.1 y beta 13.2. La solución puede implicar depurar el código de previsualización o encontrar una forma alternativa de inicializar el campo id en MyStruct.

Comments are closed.