在Swift中创建货币转换器
我想用Swift做一个货币兑换器。我看到了这篇帖子:还有 所以当我把它们结合在一起时:在Swift中创建货币转换器,swift,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(NS
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
返回的数据是一个字符串,其中的值用逗号分隔,因此我的方法是:
var dataString = NSString(data: data, encoding: NSUTF8StringEncoding)
let values = dataString.componentsSeparatedByString(",")
let exchangeRate = values[1].doubleValue
Swift 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()
Swift 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()
我在Swift 5中制作了一个更简单的货币转换器。如果您感兴趣,请访问我的GitHub: 用法非常简单:
class ViewController: UIViewController {
// Creates the Currency Converter instance:
let currencyConverter = CurrencyConverter()
override func viewDidLoad() {
super.viewDidLoad()
// Updates the exchange rates:
currencyConverter.updateExchangeRates(completion: {
// The code inside here runs after all the data is fetched.
// Now you can convert any currency:
// • Example_1 (USD to EUR):
let doubleResult = self.currencyConverter.convert(10, valueCurrency: .USD, outputCurrency: .EUR)
print("••• 10 USD = \(doubleResult!) EUR •••")
// • Example_2 (EUR to GBP) - Returning a formatted String:
let formattedResult = self.currencyConverter.convertAndFormat(10, valueCurrency: .EUR, outputCurrency: .GBP, numberStyle: .decimal, decimalPlaces: 4)
print("••• Formatted Result (10 EUR to GBP): \(formattedResult!) •••")
})
}
}
如果您想了解如何制作,可以在此处学习Swift代码:
它基本上是一个XML解析器,从以下来源获取数据:我在Swift 5中制作了一个更简单的货币转换器。如果您感兴趣,请访问我的GitHub: 用法非常简单:
class ViewController: UIViewController {
// Creates the Currency Converter instance:
let currencyConverter = CurrencyConverter()
override func viewDidLoad() {
super.viewDidLoad()
// Updates the exchange rates:
currencyConverter.updateExchangeRates(completion: {
// The code inside here runs after all the data is fetched.
// Now you can convert any currency:
// • Example_1 (USD to EUR):
let doubleResult = self.currencyConverter.convert(10, valueCurrency: .USD, outputCurrency: .EUR)
print("••• 10 USD = \(doubleResult!) EUR •••")
// • Example_2 (EUR to GBP) - Returning a formatted String:
let formattedResult = self.currencyConverter.convertAndFormat(10, valueCurrency: .EUR, outputCurrency: .GBP, numberStyle: .decimal, decimalPlaces: 4)
print("••• Formatted Result (10 EUR to GBP): \(formattedResult!) •••")
})
}
}
如果您想了解如何制作,可以在此处学习Swift代码:
它基本上是一个从以下来源获取数据的XML解析器:这真是一个优雅且轻量级的解析器。非常感谢这真的很优雅,很轻。非常感谢你