【发布时间】: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 会自动处理变量的类型。