【问题标题】:Variable error in Swift codeSwift 代码中的变量错误
【发布时间】:2017-11-09 08:23:42
【问题描述】:

我有一个 Xcode 项目有一些错误。我只有一个变量的问题。我将 txt 字符串变量转换为 int,这称为 txtint。当我想进行计算时,我不能,因为它有空值,这是不可能的,因为我在函数“pass”中给出了一个值,然后当我想减去时,我不能,因为 txtint 有空值。

//
//  ViewController.swift
//  Biophere
//
//  Created by Coder on 2017. 10. 22..
//  Copyright © 2017. Pliz Help. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var label: UILabel!
@IBOutlet weak var textview: UITextField!
@IBOutlet weak var conv: UILabel!

var text: String? = nil
var txt: String? = nil
var convert: String? = nil
var textint: Int? = nil
var txtint: Int? = nil



@IBAction func pass(_ sender: Any) {
    var txt: String {
        get {
            return textview.text ?? ""
        }
        set {
            textview.text = newValue
        }
    }
            //conv.text = txt


}




override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    label.text = text
    txt = textview.text


}

@IBAction func saveButton(_ sender: Any) {
    let textint = Int(text!)
    let txtint = Int(txt!)

    convert = String(textint! - txtint!)
    conv.text = txt
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


}

错误:线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)

【问题讨论】:

  • 从您发布的代码中,您从未在可选的“text”变量中放入有效值,您只需在 viewDidLoad 仍然为 nil 时使用它。这意味着在 saveButton 方法中展开它会使您的应用程序崩溃。你能解释一下你到底想做什么吗?
  • 而不是声明为“nil”,而是简单地定义为空白“”,例如。 var text = "" 和 var textint = 0 。 Complier 会自动处理变量的类型。

标签: swift xcode


【解决方案1】:
var text: String = ""
var txt: String = ""
var convert: String = ""
var textint: Int = 0
var txtint: Int = 0

@IBAction func saveButton(_ sender: Any) {
    if let textint = Int(text), let txtint = Int(txt) {
        convert = String(textint - txtint)
        conv.text = txt
    }else{ 
        print("handle it")
    }    
}

建议:尽量给变量名描述性,这是开发的基础。

【讨论】:

  • 你还有崩溃吗?
  • 不崩溃但什么都不做
  • 是的,可能是您输入了错误的值。所以要根据应用场景来处理。
  • 不知道什么意思,我可以和TeamViewer共享我的电脑
  • 抱歉,我无法使用 Teamviewer,但您可以评论您在文本字段中输入的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-23
  • 2015-10-24
相关资源
最近更新 更多