在Swift中创建货币转换器
问题描述:
我想在Swift中创建货币转换器。我看到这个帖子:Need API for currency converting和How to make an HTTP request in Swift?。在Swift中创建货币转换器
所以,当我一起将它们结合在一起:
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()
它返回我输出这样的:
Optional("USD to EUR",0.7987,"11/20/2014","3:45am")
但我要访问的汇率。我怎么做?我不知道该怎么做?
答
if let string = NSString(data: data, encoding: NSUTF8StringEncoding) {
let exchangeRate = string.componentsSeparatedByString(",")[1].doubleValue
}
答
返回的数据是其中的值由逗号分隔的字符串,因此这将是我的做法:
var dataString = NSString(data: data, encoding: NSUTF8StringEncoding)
let values = dataString.componentsSeparatedByString(",")
let exchangeRate = values[1].doubleValue
答
斯威夫特3版本: 我有麻烦接受的答案在Swift 3中编译。下面是我能够在swift 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()