我一直在尝试使用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) {
}
}
答案 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)