Json从银行账户解析为快速3种货币兑换价值

时间:2017-01-29 01:27:56

标签: swift xcode8

是否有可能从我国的某些银行网站获取货币汇率,这是否合法?

向我的国家/地区指定了一个应用程序并且已经尝试了一个星期但是无法找到答案这是代码可以告诉您的解决方案吗?

import UIKit

class ViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource {

     @IBOutlet weak var lblDisplay: UILabel!
     @IBOutlet weak var txtField: UITextField!
     @IBOutlet weak var pkrView: UIPickerView!

     var myCurrency:[String] = []
     var myValue:[Double] = []
     var activeCurrency:Double = 0

      override func viewDidLoad() {
      super.viewDidLoad()

     let url = URL(string: "http://ca-egypt.com")
     let task = URLSession.shared.dataTask(with: url!) { (data, response, error)in

     if error != nil{
       print("error is here!")            
        }else{
            if let content = data{     
            do{         
          let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
           if let rates = myJson["rates"] as? NSDictionary{

            var firstOne = true

            for (key,value)in rates{
            self.myCurrency.append((key as? String)!)
            self.myValue.append((value as? Double)!)
                    }
                 }                       
                }catch{

              }

          }
       }
            self.pkrView.reloadAllComponents()
    }
        task.resume()


    }

    @IBAction func btnCalculateAction(_ sender: UIButton) {

        lblDisplay.text = String(Double(txtField.text!)! * activeCurrency)

      }


     func numberOfComponents(in pickerView:  UIPickerView,umberOfRowsInComponent component: Int) -> Int {
        return myCurrency.count
    }
     func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return myCurrency.count
    }
     func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return myCurrency[row]
    }
     func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        activeCurrency = myValue[row]
    }

}

错误图片:

Screenshot

1 个答案:

答案 0 :(得分:3)

您好@Ali而不是从某些银行网站获取货币汇率,您可以使用一些免费提供的API,或者您可以使用付费API。并且取消货币汇率是非法的。他们不会允许某人获得价值。

要获得各个国家的货币汇率,请使用 Fixer.io ,这些信息每天都在更新,是的,它是免费提供的。

Fixer.io 是由欧洲中央银行发布的当前和历史汇率的免费 JSON API 。费率每天下午4点左右更新。

示例:

API链接: http://api.fixer.io/latest?base=USD

 Alamofire.request("http://api.fixer.io/latest?base=USD") .responseJSON { response in

                if let arr = response.result.value as? [String:AnyObject]
                {
                    let usd_val = (arr["rates"]?["INR"] as? NSNumber)!
                    print(usd_val)
                }

            }

通过这种方式,您可以解析JSON API并使用此货币兑换值,如果您想获得您的国家/地区货币兑换值,则传递值。

示例:要获取日本的当前货币兑换价值,请传递其价值。像这样。 http://api.fixer.io/latest?base=JPY

希望它对你有所帮助。