SwiftUI-通过API接口获取数据并填充到列表

1.创建Response.swift类,定义接收字段Struck,由于字段比较多,只取了几个比较有代表性的字段,代码如下:

import SwiftUI

struct Response: Codable {
    //结果集合
    var results: [Result]
}

struct Result: Codable {
    //曲目编号
    var trackId: Int
    //曲目名称
    var trackName: String
    //收藏名称
    var collectionName: String
}

2.列表展示页面

import SwiftUI

struct ContentView: View {

    @State var results = [Result]()
    
    var body: some View {
        List(results, id: \.trackId) { item in
            VStack(alignment: .leading) {
                Text(item.trackName)
                    .font(.headline)
                Text(item.collectionName)
            }
        }
        .onAppear(perform: loadData)
    }
    
    func loadData() {
        //请求url
        guard let url = URL(string: "https://itunes.apple.com/search?term=taylor+swift&entity=song") else {
            print("Invalid URL")
            return
        }
        let request = URLRequest(url: url)
        URLSession.shared.dataTask(with: request) { data, response, error in
            if let data = data {
                if let decodedResponse = try? JSONDecoder().decode(Response.self, from: data) {
                    //得到数据,回到主线程
                    DispatchQueue.main.async {
                        //更新界面
                        self.results = decodedResponse.results
                    }
                    //完成
                    return
                }
            }

            //报错输出
            print("错误信息: \(error?.localizedDescription ?? "未知错误")")
        }.resume()
    }
}

#if DEBUG
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif

注意:
预览时需要点击Live Preview才能看到预览效果。

展示效果如下:


截屏2019-12-0617.31.59.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 公司来了两个实习生,按照要求必须要穿工装,于是他们就去淘宝上搜西装。选定了几身之后最终定下了一款最便宜的,本来按照...
    清轻慕昱阅读 1,724评论 1 1
  • 下午和弟弟视频聊天,不知不觉说到孩子,身为爸爸12年的弟弟对大孩子很无奈,表示我已经不抱希望了,整天就知道玩,...
    幸福猪2023阅读 2,967评论 0 2
  • 这又是一个百无聊赖的下午,还下着雨,无趣到了极点,不想做任何的事,当然也不知道要干吗?只是越来越多的时候是一种...
    我是大朵呀阅读 1,589评论 0 1

友情链接更多精彩内容