首页 > 解决方案 > 如何从 URLSession 获取数组

问题描述

试图为新闻网站制作程序。我通过 api 从网站获取信息,一切正常。

唯一的问题是,如何让这个数组脱离循环?

这是我的代码:

import UIKit

class ViewController: UIViewController {
    var news:[News] = []

    override func viewDidLoad() {
        super.viewDidLoad()

        getUsers()            
        print(news)     
    }

    func getUsers() {
        guard let url = URL(string: "http://prostir.news/swift/api2.php") else         {return}
        URLSession.shared.dataTask(with: url) { data, response, error in
            if let data = data {
                do {
                    news = try JSONDecoder().decode([News].self, from: data)
                    // print(self.news)
                } catch let error {
                    print(error)
                }
            }
        }.resume()
    }
}

标签: iosarraysswiftswift5.1

解决方案


struct News:Codable, CustomStringConvertible{
    let href:String?
    let site:String?
    let title:String?
    let time:String?

    var description: String {
        return "(href:- \(href), site:- \(site), title:- \(title), time:- \(time))"
    }
}

在您的类中声明新闻数组并在 getUsers 方法中将响应分配给该数组

var news:[News] = []

func getUsers(){
    guard let url = URL(string: "https") else {return}
    URLSession.shared.dataTask(with: url) { data, response, error in
        if let data = data {
            do {
                self.news = try JSONDecoder().decode([News].self, from: data)
                print(self.news)
            } catch let error {
                print(error)
            }
        }
    }.resume()
}

推荐阅读