很长的问题,请耐心等待......
我正在尝试创建一个用Swift编写的比特币代码和转换器。我正在使用下面的代码(与转换无关的位被删除 - 如果我遗漏了任何重要内容,请告诉我)
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var USD: UITextField! //Amount of USD. Originally equals 1 bitcoin, can be changed by user.
@IBOutlet weak var BTC: UILabel! //Amount of bitcoins the entered amount of USD is worth. Originally 1.
func handler(response: NSURLResponse!, data : NSData!, error : NSError!) { //To fetch Bitcoin Price. This is functional.
if ((error) != nil) {
self.USD.text = "No Internet" // in case of error
} else {
var price = NSString(data:data, encoding:NSUTF8StringEncoding)
self.USD.text = price //set USD to be equal to price of 1 Bitcoin
}
override func viewDidLoad() {
//Sets up view
self.update() //Fetches Bitcoin Price. This works.
self.convert() //Begins convert method
var timer = NSTimer.scheduledTimerWithTimeInterval(120, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
func convert() {
var url = NSURL(string:"https://api.bitcoinaverage.com/ticker/USD/last")
var request = NSURLRequest(URL: url)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:handler)
var data = NSData(contentsOfURL:url);
while true {
if USD.text != data {
BTC.text = USD.text / NSString(data:data, encoding:NSUTF8StringEncoding)// Attempts to determine amount of bitcoin the USD amount is worth. ERROR HERE!
}
}
在注释“ERROR HERE”的行上,我收到错误
/Users/[My User]/Documents/dev/Newest Stuff/CryptoCoinTicker/CryptoCoinTicker/ViewController.swift:95:32: 'String' is not convertible to 'UInt8'
如果代码没有说明故事,我希望BTC.text更改为与用户在USD.text中输入的金额相等(因此,如果比特币价值500美元,并且用户输入250.00,BTC.text会说0.5。
我需要做什么?对(可能)基本问题道歉,我只是一个新手。如果你了解更多信息,请告诉我。
提前致谢!
答案 0 :(得分:1)
当您收到该错误时,通常意味着您正在尝试为变量分配错误的类型,或者您正在使用错误类型的函数参数。 在你的情况下,你试图划分两个字符串。编译器不知道该怎么做,因为没有定义字符串的划分。你只能将Int,Float和Double分开,你甚至无法混合它们!
因此,对于该行,您可以替换它:
let value = NSString(string: USD.text).doubleValue / NSString(data:data, encoding:NSUTF8StringEncoding).doubleValue
BTC.text = "\(value)"
首先将USD.text“转换”为NSString,然后将两个NSStrings转换为双打,然后再分割。 然后它从该值创建一个String,该值可以分配给BTC.text属性。