使用Swift时出错 - Instance成员不能用于'ViewController'类型

10 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) {


    }
}
Run Code Online (Sandbox Code Playgroud)

Scr*_*ble 12

您不能在类中的函数调用之外使用这两行

let myString = percentLabel
let myInt: Int? = Int(myString)
Run Code Online (Sandbox Code Playgroud)

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

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


Ars*_*sen 9

每次调用它时,此代码都会返回一个新值.我希望它能满足您的需求

var myInt: Int? {
    return Int(percentLabel.text!)
}
Run Code Online (Sandbox Code Playgroud)

代替

let myString = percentLabel
let myInt: Int? = Int(myString)
Run Code Online (Sandbox Code Playgroud)