Swift - GET数据

Swift - GET数据 首页 / iOS入门教程 / Swift - GET数据

在本教程的上一部分中,无涯教程安装了Alamofire并将其设置为向应用程序编程接口(API)发出请求,该接口可在服务器和iOS应用程序之间传输数据。在本部分中,无涯教程将看到如何使用Alamofire通过Get请求获取数据。

GET请求

使用alamofire发出获取请求非常简单。 Alamofire的请求方法用于此目的。语法在下面给出。

Alamofire.request("http://url.com/get").responseJSON{ response
    in 
    print(response.request)
    print(response.result)
    print(response.response)

    if let result = response.result.value{
    Print(result)
    }
}

使用Alamofire的获取请求时,无涯教程只需要拥有API URL。关于成功,无涯教程获得了一个响应对象,使用无涯教程可以获得响应结果值,可以在无涯教程的响应模型中解析。

例子

在此示例中,无涯教程将使用Apple虚拟API URL https://itunes.apple.com/search?media=music&term=bollywood。在这里,无涯教程将创建一个应用程序,其中包含一个动态表视图,以向用户显示API数据。在此应用程序中,无涯教程将向API发出get请求,然后将API数据填充到tableview中。

请按照上一章中给出的步骤在应用程序中安装Alamofire并打开xcworkspace文件。创建一个MainViewController类,并发出获取请求以使用Alamofire打印API数据。

mainViewController.swift.

import UIKit
import Alamofire


class ViewController: UIViewController {


    override func viewDidLoad() {
        super.viewDidLoad()
       //Do any additional setup after loading the view.
        loadJsonData()
    }
    func loadJsonData()
    {
       Alamofire.request("https://itunes.apple.com/search?media=music&term=bollywood").responseJSON { (response) in
                        print("Response.result.value \(response.result.value!)")
        }
    }
}

上面的应用程序将在控制台中打印响应,如下所示。

Fetching data through Get request using Alamofire

在这里,结果计数将为50。在这里,无涯教程将使用tableview创建接口构建器以显示此数据。

main.storyboard.

在Storyboard文件中,无涯教程将在UIViewController内添加一个表查看。在原型单元格中,无涯教程将添加图像视图和标签,以分别显示收集艺术家名称,艺术家国家和艺术家名称。无涯教程会将CartableViewCell子类分配给此单元格并创建各个插座。

在Storyboard文件中,无涯教程将在UIViewController内添加一个表视图。在“Prototype”单元内,无涯教程将添加一个图像视图和标签,以分别显示“Collection Artist name”,astist country和artist name。无涯教程将MainTableVIewCell子类分配给此单元格并创建各自的出口。

Fetching data through Get request using Alamofire

MainTableViewCell.swift

import UIKit

class MainTableViewCell: UITableViewCell {
    @IBOutlet weak var trackName: UILabel!
    @IBOutlet weak var artistImgView: UIImageView!
    
    @IBOutlet weak var artisName: UILabel!
    @IBOutlet weak var artistCountry: UILabel!
    override func awakeFromNib() {
        super.awakeFromNib()
       //初始化代码
    }


    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)


       //为选定状态配置视图
    }
}

ViewController.swift

import UIKit
import Alamofire


class ViewController: UIViewController {


    @IBOutlet weak var tableView: UITableView!
    
    var artist = [[String:Any]]()
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
       //Do any additional setup after loading the view.
        loadJsonData()
        tableView.delegate = self
        tableView.dataSource = self
        //tableView.rowHeight = UITableView.automaticDimension
    }
    func loadJsonData()
    {
       Alamofire.request("https://itunes.apple.com/search?media=music&term=bollywood").responseJSON { (response) in
            print("Response value \(response)")
        
            print("Response.result.value \(response.result.value!)")
        
        if let json = response.result.value as! [String:Any]?{
            if let responseValue = json["results"] as! [[String:Any]]?{
                self.artist = responseValue
                self.tableView.reloadData()
            }
        }
        }
    }
}


extension ViewController : UITableViewDataSource{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return artist.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "MainTableViewCell") as! MainTableViewCell
        if(artist.count > 0){
            do{
            let artistData = artist[indexPath.row]
            cell.artistImgView.image = try UIImage(data: Data(contentsOf: URL(string: artistData["artworkUrl60"] as! String) ?? URL(string: "http://www.google.com")!))
                cell.trackName.text = artistData["trackName"] as! String
                cell.artisName.text = artistData["artistName"] as! String
                cell.artistCountry.text = artistData["country"] as! String
            }catch{
                
            }
            
        }
        return cell
        
    }
    
    
}
extension ViewController : UITableViewDelegate{
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 220
    }
    
}

输出

Fetching data through Get request using Alamofire

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

邱岳的产品手记 -〔邱岳〕

趣谈网络协议 -〔刘超〕

Elasticsearch核心技术与实战 -〔阮一鸣〕

罗剑锋的C++实战笔记 -〔罗剑锋〕

Redis核心技术与实战 -〔蒋德钧〕

Django快速开发实战 -〔吕召刚〕

说透芯片 -〔邵巍〕

Go 语言项目开发实战 -〔孔令飞〕

AI大模型企业应用实战 -〔蔡超〕

好记忆不如烂笔头。留下您的足迹吧 :)