为什么数组的append方法不能在viewController中使用?

时间:2019-05-20 19:43:52

标签: swift xcode viewcontroller

我是迅速的初学者。我试图在代码中使用数组的append方法,但是它不起作用。我应该如何正确实现数组?

错误消息: Swift编译器错误组 ViewController.swift:16:5:预期的声明 ViewController.swift:11:7:在“ ViewController”的声明中

我试图在我的代码中使用数组的append方法,但是它不起作用。

import UIKit

class ViewController: UIViewController { //Error msg: In declaration of 'ViewController'

@IBOutlet weak var dice: UIImageView!
@IBOutlet weak var dice2: UIImageView!
var dices : [String] = []
dices.append("Hi") //Error: Expected declaration

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

@IBAction func rollPressed(_ sender: UIButton) {
    dice.image = UIImage(named: "dice3")
}

}

我希望可以将"hi"添加到数组dices中。

2 个答案:

答案 0 :(得分:3)

在完全初始化vc之后,您应该在函数内调用append

class ViewController: UIViewController { //Error msg: In declaration of 'ViewController'

@IBOutlet weak var dice: UIImageView!
@IBOutlet weak var dice2: UIImageView!
var dices : [String] = [] 

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    dices.append("Hi") // e.x here
}

@IBAction func rollPressed(_ sender: UIButton) {
    dice.image = UIImage(named: "dice3")  
}

}

替换

var dices : [String] = []

使用

var dices = ["Hi"]

答案 1 :(得分:1)

SH_Khan是正确的。我会解释为什么。

定义class时,缩进的第一级仅用于其方法和属性,即funcvarlet。 (您也可以在其中定义其他类/结构/枚举)

调用这些功能或系统功能,例如Array.append()print("dog sweat")必须在另一个功能内部进行。原因是您的应用程序的实时逻辑实际上一直都在起作用。除非先在另一个函数内部,否则不会调用任何函数。 (唯一的例外是Swift的快速而肮脏的初始化,例如将默认值设置为var或其他函数之外的init() { }。)

除非发出一些声音,否则狗不会从午睡中醒来。它不会自己做。 (cr脚的比喻,但是)

我希望这有道理。