Я звоню API для заполнения данных в UIPickerView
, используя Swift 5 и Alamofire 4.8.2 .
import UIKit
import Alamofire
import SwiftyJSON
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
var my_array = [[String : AnyObject]]()
@IBOutlet weak var pickerArray: UIPickerView!
@IBOutlet weak var labelName: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
guard let url = URL(string:"https://restcountries.eu/rest/v2/all") else {
return
}
Alamofire.request(url, method: .get, encoding: JSONEncoding.default, headers: nil).responseJSON { (resData) -> Void in
let swiftyJsonVar = JSON(resData.result.value!)
print("Full Output", swiftyJsonVar)
let finalData = swiftyJsonVar[0]["callingCodes"].arrayValue
print("final data", finalData)
let finalData2 = swiftyJsonVar[0]["borders"].arrayValue
print("single dimensional array output: ", finalData2)
let sampData = JSON(resData.result.value!)
self.my_array = finalData2 as [AnyObject] as! [[String : AnyObject]]
self.pickerArray.reloadAllComponents()
}
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return my_array.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return my_array[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
labelName.text = "You Selected : " + my_array[row]
}
}
Наконец, мне нужно это
* " finalData2 " результат в моем окне выбора
* также любые данные, которые мне нужно взять из этих вложенных данных JSON и передать в представление выбора