Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

237
Vistas
Convierta enlaces html dentro de texto en enlaces en los que se puede hacer clic - SwiftUI

¿Hay alguna forma actualizada de convertir enlaces dentro del texto? Recibo este tipo de texto de una API:

 var someText: String = "with banks (for example to the sometimes controversial but leading exchange <a href="https://www.coingecko.com/en/exchanges/bitfinex">Bitfinex</a>)."

¿Cómo puedo convertir ese enlace interno en un enlace en el que se puede hacer clic con el nombre correcto, en el ejemplo anterior: Bitfinex?

El texto podría contener varios enlaces. SwiftUI ahora admite Markdown, manualmente podría hacerlo así:

 Text("[Privacy Policy](https://example.com)")

pero, ¿cómo lo hago para un texto recibido de api con múltiples enlaces?

Buscando una solución Swift 5 y SwiftUI 3.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Lo que tienes es una cadena html. Puede interpretar su cadena html usando las opciones de inicialización de NSAttributedString NSAttributedString.DocumentType.html e inicializar una nueva AttributedString con ella. No es necesario manipular y/o analizar manualmente su cadena:


Primero agregue esta extensión a su proyecto:

 extension StringProtocol { func htmlToAttributedString() throws -> AttributedString { try .init( .init( data: .init(utf8), options: [ .documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue ], documentAttributes: nil ) ) } }

Luego extienda Text para agregar un inicializador personalizado:

 extension Text { init(html: String, alert: String? = nil) { do { try self.init(html.htmlToAttributedString()) } catch { self.init(alert ?? error.localizedDescription) } } }

 import SwiftUI struct ContentView: View { var html = #"with banks (for example to the sometimes controversial but leading exchange <a href="https://www.coingecko.com/en/exchanges/bitfinex">Bitfinex</a>. For more info <a href="https://www.google.com/">Google</a>).""# var body: some View { Text(html: html) } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda