实例成员不能用于类型视图控制器

Posted

技术标签:

【中文标题】实例成员不能用于类型视图控制器【英文标题】: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.

【问题讨论】:

【参考方案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"
    

【讨论】:

以上是关于实例成员不能用于类型视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 - 实例化视图控制器后没有成员错误

静态类函数:实例成员不能用于类型

这里出了啥问题:实例成员不能用于类型 [重复]

实例成员不能用于 struct swift 之间的嵌套类型的实例

静态成员“负载”不能用于“AppDelegate”类型的实例

视图控制器的全局实例是不是应该由应用程序委托拥有