【问题标题】:instance member cannot be used on type view controller实例成员不能用于类型视图控制器
【发布时间】:2015-10-25 21:56:40
【问题描述】:

我看过很多关于堆栈溢出的帖子,但没有一个对我有帮助。我正在上udemy的课程,我的老师没有问题

var age = Int(catAge.text);

但由于某种原因,我收到一条错误消息

实例成员 'catAge' 不能在类型视图控制器上使用

这是我的全视图控制器:

import UIKit
class ViewController: UIViewController {
@IBOutlet var catAge: UITextField!
@IBOutlet var result: UILabel!
var age = Int(catAge.text)
@IBAction func submit(sender: AnyObject) {
    result.text = age * 7
}
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}
override func didRecieveMemoryWarning() {
super.didRecieveMemoryWarning()
// Dispose of any resources that can be recreated.
}

我还收到一条错误消息,提示我无法乘以 Int? and Int.

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    var age = Int(catAge.text) 行在您编写它的上下文中无效 - 作为实例变量。您可以在方法的范围内编写该行,但在给定点上没有任何意义 - 应该发生什么?首先 catAge 是 nil,其次如果不是,文本肯定是空的,因为还没有用户有机会输入任何内容。

    年龄是Int? 类型,因为不确定是否可以将文本转换为int。要将 age 相乘,您必须打开它,或者更好地检查它是否可以转换为 int:

    @IBAction func submit(sender: AnyObject) {
        if let age = Int(catAge.text) {
            result.text = age * 7
        } else {
            result.text = "please input an integer"
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      • 2020-09-07
      • 2016-05-23
      • 2016-01-01
      • 2016-09-09
      • 2016-02-15
      相关资源
      最近更新 更多