[SwiftUI] ブラウザで表示するWebリストを作る

WebブラウザでURLを開くにはLink()を使う
Webブラウザとの行き来の仕組みはLink()機能に組み込まれている
Webページのデータは構造体として定義する
Identifiable, UUID, List, Link, URL, UIApplication.shared.canOpenURL

ContentView.swift

struct webData: Identifiable {
    var id = UUID()
    var name:String
    var url:String
    var favicon:String
}

let webList = [
    webData(name: "アップル", url: "https://www.apple.com/jp/", favicon: "apple"),
    webData(name: "東京国立博物館", url: "https://www.tnm.jp", favicon: "tnm"),
    webData(name: "東京都現代美術館", url: "https://www.mot-art-museum.jp", favicon: "mo"),
    webData(name: "川崎水族館", url: "https://kawa-sui.com", favicon: "kawa-sui")
]

struct ContentView: View {
    var body: some View {
        NavigationView {
            List(webList) { item in
                Image(item.favicon).resizable().frame(width:40, height:40)
                Link(item.name, destination: URL(string: item.url)!)
            }.navigationTitle("Webリスト")
        }.navigationViewStyle(.stack)
    }
}

webリンクはLink(_ title:String, destination:URL)で作ることができる
URLのチェックは UIApplication.shared.canOpenURL(url)によるURLチェックの仕組みを合わせられる

            List(webList) { item in
                HStack {
                    Image(item.favicon).resizable().frame(width:40, height:40)
                    if let url = URL(string: item.url), UIApplication.shared.canOpenURL(url){
                        Link(item.name, destination: url)
                    } else {
                        Text(item.name).foregroundColor(.gray)
                        + Text(" URLエラー ").foregroundColor(.red).italic()
                    }
                    
                }
            }.navigationTitle("Webリスト")

なるほどー 
ラッパーがかなり用意さてますね