如何在 Swift 中将值传递给 API

  • 本文关键字:值传 API Swift ios swift
  • 更新时间 :
  • 英文 :


我几乎是 Swift 的初学者,我正在尝试传递一个值来调用 API,该值来自输入字段。下面给出了该 API。如何编写代码以从文本字段传递ZIP_CODE的值?

https://iaspub.epa.gov/enviro/efservice/getEnvirofactsUVDAILY/ZIP/ZIP_CODE/JSON

@IBOutlet var zipLabel: UILabel!
@IBOutlet var zipInput: UITextField!
@IBOutlet var jsondataLabel: UILabel!
override func viewDidLoad() {
    super.viewDidLoad()
    getJSON()      
}
@IBAction func btnAction() {
    zipLabel.text = zipInput.text
}
func getJSON(){
    let url = NSURL(string :"https://iaspub.epa.gov/enviro/efservice/getEnvirofactsUVDAILY/ZIP/10001/JSON")
    let request = URLRequest(url: url as! URL )
    let config = URLSessionConfiguration.default
    let session = URLSession(configuration: config)
    let task = session.dataTask(with: request){(data, response, error ) -> Void in
        if error == nil{
            DispatchQueue.main.async(execute: {
                let jsondata = JSON(data : data!)
                print(jsondata)
                print("-----")
                print(jsondata[0]["UV_INDEX"])
                let result =  jsondata[0]["UV_INDEX"].stringValue
                self.jsondataLabel.text = result
            })
        }else{
            print("There was an error")    
        }
    }
    task.resume()
}
func getJSON(_ zipcode : Int){

            let url = NSURL(string :"https://iaspub.epa.gov/enviro/efservice/getEnvirofactsUVDAILY/ZIP/(zipcode)/JSON")
            let request = URLRequest(url: url as! URL )
            let config = URLSessionConfiguration.default
            let session = URLSession(configuration: config)

            let task = session.dataTask(with: request){(data, response, error ) -> Void in
                if error == nil{
                    DispatchQueue.main.async(execute: {
                        let jsondata = JSON(data : data!)
                        print(jsondata)
                        print("-----")
                        print(jsondata[0]["UV_INDEX"])
                        let result =  jsondata[0]["UV_INDEX"].stringValue
                        self.jsondataLabel.text = result
                    })
                }else{
                    print("There was an error")    
                }
            }
            task.resume()
    }

如果您的 API 在 GET 请求上为您提供响应,您可以使用以下代码 -

@IBOutlet var zipLabel: UILabel!
@IBOutlet var zipInput: UITextField!
@IBOutlet var jsondataLabel: UILabel!
override func viewDidLoad() {
    super.viewDidLoad()
}
@IBAction func btnAction() {
    zipLabel.text = zipInput.text
    getJSON(zipcode: zipInput.text)
}
func getJSON(zipcode: String){
    let url = NSURL(string :"https://iaspub.epa.gov/enviro/efservice/getEnvirofactsUVDAILY/ZIP/10001/JSON&zipcode="+zipcode)
    let request = URLRequest(url: url as! URL )
    let config = URLSessionConfiguration.default
    let session = URLSession(configuration: config)
    let task = session.dataTask(with: request){(data, response, error ) -> Void in
        if error == nil{
            DispatchQueue.main.async(execute: {
                let jsondata = JSON(data : data!)
                print(jsondata)
                print("-----")
                print(jsondata[0]["UV_INDEX"])
                let result =  jsondata[0]["UV_INDEX"].stringValue
                self.jsondataLabel.text = result
            })
        }else{
            print("There was an error")    
        }
    }
    task.resume()
}

但请注意,如果您的 API 在 POST 请求上为您提供响应,则此代码将不起作用。

最新更新