【问题标题】:Operations based on user input Swift基于用户输入的操作 Swift
【发布时间】:2014-08-25 17:48:00
【问题描述】:

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

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

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

提前致谢!

【问题讨论】:

    标签: cocoa-touch swift nsstring ios8 xcode6


    【解决方案1】:

    当您收到该错误时,通常意味着您尝试为变量分配错误的类型,或者您为函数参数使用了错误的类型。 在您的情况下,您正在尝试划分两个字符串。编译器不知道该怎么做,因为没有定义字符串的划分。你只能划分 Int、Float 和 Double,你甚至不能混合它们!

    所以你可以用这个代替那一行:

    let value = NSString(string: USD.text).doubleValue / NSString(data:data, encoding:NSUTF8StringEncoding).doubleValue
    BTC.text = "\(value)"
    

    这首先将 USD.text “转换”为 NSString,然后将两个 NSString 转换为 Double,然后您可以将其分开。 然后它根据该值创建一个字符串,可以将其分配给 BTC.text 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多