访问在swift中的函数外的覆盖func viewDidLoad(){super.viewDidLoad()函数中创建的变量

时间:2015-06-14 06:22:56

标签: ios swift viewdidload

import UIKit

class SecondViewController: UIViewController {

    @IBOutlet weak var labelA: UILabel!
    @IBOutlet weak var labelB: UILabel!


    var dataPassed:String!
    var secondDataPassed:String!
    var newVar: String!
    var newVar2: String!

    override func viewDidLoad() {
        super.viewDidLoad()
        labelA.text = dataPassed
        labelB.text = secondDataPassed
        newVar = labelA.text
         println(newVar)
    }


 println(newVar) *** I can't access newVar outside override func viewDidLoad() { - Gives "expected declaration" Its driving me crazy!!!***

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

1 个答案:

答案 0 :(得分:0)

dataPassed中是否有数据?如果没有为dataPassed变量分配任何String,然后将newVar分配给dataPassed,则newVar将无需打印。

尝试:

    import UIKit

   class SecondViewController: UIViewController {
    @IBOutlet weak var labelA: UILabel!
    @IBOutlet weak var labelB: UILabel!


    var dataPassed:String! = "Test."
    var secondDataPassed:String!
    var newVar: String!
    var newVar2: String!

    override func viewDidLoad() {
        super.viewDidLoad()
        labelA.text = dataPassed
        labelB.text = secondDataPassed
        newVar = labelA.text
         println(newVar)
    }

其次,您似乎在功能之外再次尝试println。这不会起作用,因为viewDidLoad本质上是应用程序的“主要方法”。您可以创建响应按钮触摸等的其他函数...并在那里运行println,但由于Swift代码是在功能上执行的,因此您执行的代码必须在特定函数内部。虽然你可以像你一样声明变量,但你不能执行诸如在函数之外打印它们之类的动作,因为那时没有疯狂的命令/方法。

唯一可以在没有功能的情况下独立运行Swift代码的地方是Swift Playground。在XCode中,您可以选择文件 - >新 - >游乐场试试这个。