使用Swift时出错 - 实例成员不能用于“ViewController”类型

时间:2015-10-10 14:37:27

标签: ios swift

我一直在尝试使用Swift在Xcode 7中创建一个应用程序,我正在尝试使用此代码将文本字段内的数字转换为整数let a = Int(percentLabel.text!)

但每次尝试此操作时都会收到Instance Member 'percentLabel' cannot be used on type 'ViewController'

的错误消息

我不知道为什么我会收到此错误,也许这是我在Xcode 7中已经发现的错误。

这是我的完整代码。

import UIKit

class ViewController: UIViewController {
    @IBOutlet var tipSlider: UISlider!
    @IBOutlet var splitSlider: UISlider!
    @IBOutlet var billAmount: UITextField!
    @IBOutlet var totalLabel: UILabel!
    @IBOutlet var tipTotal: UILabel!
    @IBOutlet var totalPerPerson: UILabel!
    @IBOutlet var percentLabel: UILabel!
    @IBOutlet var splitLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    let a = Int(percentLabel.text!)

    @IBAction func tipChanged(sender: AnyObject) {
        let currentValue = Int(tipSlider.value)
        percentLabel.text = "\(currentValue)"
    }

    @IBAction func splitChanged(sender: AnyObject) {
        let currentValue = Int(splitSlider.value)
        splitLabel.text = "\(currentValue)"
    }

    @IBAction func amountChanged(sender: AnyObject) {


    }
}

2 个答案:

答案 0 :(得分:12)

你不能在类

中的函数调用之外使用这两行
let myString = percentLabel
let myInt: Int? = Int(myString)

您不能将属性初始化为另一个属性的值,也不能将变量的默认值设置为另一个属性的默认值。你通常会在viewDidLoad或viewWillAppear这样的函数中执行此操作。阿森的答案也应该有效,因为它会试图懒散地获得价值,或者当你提出要求时。

let myString = percentLabel也不会返回文本,您需要执行let myString = percentLabel.text但不能像属性一样分配此值。你需要将他的代码放在函数体中

答案 1 :(得分:9)

每次调用时,此代码都会返回一个新值。我希望你能找到它

var myInt: Int? {
    return Int(percentLabel.text!)
}

而不是

let myString = percentLabel
let myInt: Int? = Int(myString)