Почему метод добавления массива нельзя использовать в viewController? - PullRequest
0 голосов
/ 20 мая 2019

Я новичок в Swift. Я пытался использовать метод добавления массива в моем коде, но он не работает. Как правильно реализовать массив?

Сообщения об ошибках: Группа ошибок компилятора Swift ViewController.swift: 16: 5: ожидаемое объявление ViewController.swift: 11: 7: в объявлении 'ViewController'

Я пытался использовать метод добавления массива в моем коде, но он не работает.

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 ]

3 голосов
/ 20 мая 2019

Вы должны вызывать append внутри функции после того, как vc полностью инициирован

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 голос
/ 20 мая 2019

SH_Khan прав.Хотя я объясню почему.

При определении class первый уровень отступа только для его методов и свойств, он же func, var и let.(Вы также можете определить другие классы / структуры / перечисления там)

Вызов этих функций или системных функций, таких как Array.append() или print("dog sweat"), должен происходить внутри другой функции.Причина в том, что живая логика вашего приложения буквально просто функционирует до конца.Ни одна функция не вызывается, если она не находится внутри другой функции.(Единственными исключениями являются быстрая и грязная инициализация Swift, например, установка значения по умолчанию var вне init() { } или другой функции.)

Собака не просыпается от дремоты, пока вы не сделаетекакой-то шум.Он не будет делать это сам по себе.(дерьмовая метафора, но да)

Надеюсь, это имело смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...