Глобальный массив не добавляется в Swift - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть глобальный массив cannonArray, который я инициализировал перед любой функцией.У меня есть функция touchesBegan, которая добавляет значения в массив.Когда я печатаю массив из функции touchesBegan, он печатается идеально.Тем не менее, когда я печатаю массив из didMoveToViewFunction, ничего не обновляется, а просто печатает [] (и не изменяется, как следует, потому что он глобальный).У меня также есть другая функция с именем createEnemies, которая работает по таймеру и имеет ту же проблему (печатает правильный добавленный массив внутри функции, но не в другой).Спасибо!:)

 var cannonArray = [SKSpriteNode]()
 var enemyArray = [SKSpriteNode]()

 override func didMove(to view: SKView) {

    enemyCreationTimer = Timer.scheduledTimer(timeInterval: 0.75, target: self, selector: #selector(createEnemies), userInfo: nil, repeats: true)

    print(enemyArray) //prints empty array
    print(cannonArray) // prints empty array

}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

    let touch = touches.first!
    let location = touch.location(in: self)

    cannon = SKSpriteNode(imageNamed: "cannon")
    cannon.size = CGSize(width: 50, height: 50)
    cannon.position = location

    if frameArray[0].contains(location) || frameArray[1].contains(location) {
        print("cant")
    }else {
        self.addChild(cannon)
        self.cannonArray.append(cannon)
        //if i print here it works
    }

}
 @objc func createEnemies() {

    enemiesSpawned += 1

    if enemiesSpawned > enemyNumber {

        enemyCreationTimer.invalidate()

    }else {

        enemy = SKSpriteNode(imageNamed: "enemy")
        enemy.position = CGPoint(x: spriteOne.position.x, y: CGFloat(650))
        enemy.size = CGSize(width: 25, height: 25)
        self.addChild(enemy)
        enemy.zPosition = 0
        enemy.physicsBody = SKPhysicsBody(circleOfRadius: 12.5)
        enemy.physicsBody?.affectedByGravity = false

        enemy.run(moveEnemies())
        enemyArray.append(enemy)
        //if i print here it works


    }

}
...