【问题标题】:How do I store data (user input from a textfield)如何存储数据(来自文本字段的用户输入)
【发布时间】:2019-09-18 14:44:26
【问题描述】:

我正在使用 Swift,我想知道如何将用户输入存储为变量(它是一个双精度变量)。

我仍处于学习状态,所以我一直在观看有关这种情况的 youtube 教程,但没有任何帮助。

我的代码:

import UIKit

class ViewController: UIViewController {


    @IBOutlet weak var userInput: UITextField!
    override func viewDidLoad() {
        userInput.delegate = self
    }

    @IBAction func Increment(_ sender: UIButton) {
        var inc = 0
        userInput = userInput + inc
    }

    @IBAction func Decrement(_ sender: UIButton) {

    }
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        userInput.resignFirstResponder()

    }

}

extension ViewController: UITextFieldDelegate{
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()

        return true
    }

}

用户将能够输入一个数字并通过某个输入值增加或减少该数字。

【问题讨论】:

  • 你知道你是通过加 1 而不是 0 来递增的,对吧?

标签: ios swift


【解决方案1】:
//fetch any number from textfield 

func getValueFromTextfield() -> Double?{

  guard let text = userInput.text else {
      print("Missing user input")
      return nil 
  }

  guard let doubleValue = Double(text) else {
      print("parse failure")
      return nil 
  }
return doubleValue
}

// 现在对于递增和递减,我们有类似的方法,假设某个输入值作为1 用于递增和递减,如果需要替换它

func increment(){

// get value
   if let value = getValueFromTextfield(){
    userInput.text = “\(value + 1)” // increment by 1 
   }
}

func decrement(){

 // get value and check if it’s greater than zero
  if let value = getValueFromTextfield(), value > 0{
    userInput.text = “\(value - 1)” // decrement by 1
  }
}

@IBAction func Increment(_ sender: UIButton) {
    increment()
}

@IBAction func Decrement(_ sender: UIButton) {
    decrement()
}

这些方法将帮助您实现递增或递减操作,而无需将值存储在任何变量中。

如果您仍想将值保存在变量中,只需存储从方法 let valueToStore = getValueFromTextfield() 返回的值

【讨论】:

    【解决方案2】:

    您的代码无法正确编译,但您的问题的答案是:

    let doubleValue = Double(userInput.text!)! 将您的代码转换为双精度

    或更好地使用可选的展开:

    guard let text = userInput.text else {
        print("text of userInput is nil")
        return
    }
    guard let doubleValue = Double(text) else {
        print("Impossible to parse \(text) into Double")
        return
    }
    print(doubleValue)
    

    【讨论】:

      【解决方案3】:
      @IBAction func Increment(_ sender: UIButton) {
          if let text = userInput.text, var doubleText = Double(text) {
              doubleText = doubleText + 1
              userInput.text = "\(doubleText)"
          }
      }
      
      

      类似地,你可以写为 Decrement。

      【讨论】:

        【解决方案4】:
        @IBAction func Increment(_ sender: UIButton) {
            var inc = 0
            userInput.text = ( Double(userInput.text) + Double(inc) ).rounded(toPlaces: 1)
        }
        

        【讨论】:

        • 嗨,请不要在没有任何解释的情况下发布仅代码的答案
        猜你喜欢
        • 2011-10-14
        • 1970-01-01
        • 2018-09-22
        • 2017-07-07
        • 1970-01-01
        • 2017-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多