基于用户输入Swift的操作

时间:2014-08-25 17:48:01

标签: cocoa-touch swift nsstring ios8 xcode6

很长的问题,请耐心等待......

我正在尝试创建一个用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。

我需要做什么?对(可能)基本问题道歉,我只是一个新手。如果你了解更多信息,请告诉我。

提前致谢!

1 个答案:

答案 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属性。