2014-11-21 3 views
1

Swift에서 통화 변환기를 만들려고합니다. 나는이 게시물을 보았다 : Need API for currency convertingHow to make an HTTP request in Swift?.Swift에서 통화 변환기 만들기

그래서 나는 그들을 함께 결합 될 때 :

Optional("USD to EUR",0.7987,"11/20/2014","3:45am") 

하지만 통화 환율에 액세스하려면 :

let url = NSURL(string: "http://download.finance.yahoo.com/d/quotes.csv?s=USDEUR=X&f=nl1d1t1"); 

let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in 
    println(NSString(data: data, encoding: NSUTF8StringEncoding)) 
} 

task.resume() 

그것은 같은 나에게 출력을 반환합니다. 어떻게해야합니까? 어떻게해야할지 모르겠다. 반환

답변

2
if let string = NSString(data: data, encoding: NSUTF8StringEncoding) { 
    let exchangeRate = string.componentsSeparatedByString(",")[1].doubleValue 
} 
1

데이터는 값이 쉼표로 구분 된 문자열입니다, 그래서 이것은 내 방법이 될 것입니다 :

var dataString = NSString(data: data, encoding: NSUTF8StringEncoding) 
let values = dataString.componentsSeparatedByString(",") 

let exchangeRate = values[1].doubleValue 
0

스위프트 3 버전 : 나는 문제에 허용 답변을 받고 있었다 Swift 3에서 편집하십시오. 다음은 신속하게 작업 할 수 있었던 3입니다.

guard let url = URL(string: "https://download.finance.yahoo.com/d/quotes.csv?s=USDEUR=X&f=nl1d1t1") else { 
     print("Error: cannot create translation URL") 
     return 
    } 

    let loadRequest = URLRequest(url:url) 

    URLSession.shared.dataTask(with: loadRequest, completionHandler: { (data, response, error) in 
     if let error = error { 
      #if DEBUG 
       print("Error: data task error for translation \(error)") 
      #endif 
      return 
     } 

     guard let data = data else { 
      #if DEBUG 
       print("Error: data null for translation") 
      #endif 
      return 
     } 
     if let translationString = String(data: data, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) { 
      #if DEBUG 
       print(translationString) 
      #endif 

      let exchangeRateArray = translationString.components(separatedBy: ",") 
      let exchangeRate: Double = Double(exchangeRateArray[1])! 
      print(exchangeRate) 
     } 
     else { 
      #if DEBUG 
       print("Error generating string from data in translation") 
      #endif 
      return 
     } 

    }).resume()