【问题标题】:array.insert won't save elementsarray.insert 不会保存元素
【发布时间】:2017-01-25 02:31:28
【问题描述】:

我是 Swift 的初学者,并将创建 Tictactoe 游戏作为练习的一部分。我正在尝试创建一个包含 9 个元素的空数组以跟踪游戏结果。我正在使用 .insert 方法来填充相应的元素。但是,每次玩家点击按钮时,该数组都不会保存先前的元素并从初始数组中更新其自身。 (哦,天哪,我真的不擅长书面解释)

这是我的代码:

import UIKit

class ViewController: UIViewController {

    var cross = false



    @IBAction func buttonPressed(_ sender: UIButton) {

        var resultArray = [String!](repeating: nil, count:9)

        let button = sender

       var index = button.tag

        if cross{

            button.setImage(UIImage(named: "cross.png"), for: UIControlState.normal)

            resultArray.insert("cross", at: index)

            resultArray.remove(at: index+1)

            cross = false
        }

        else{

            button.setImage(UIImage(named: "nought.png"), for: UIControlState.normal)

            resultArray.insert("nought", at: index)

            resultArray.remove(at: index+1)

            cross = true
        }


        print(resultArray)


    }

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

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

And here is what I get when running the code

【问题讨论】:

  • 这是和英文论文吗?为什么要双倍间距? :p
  • 你可以简化这一切:pastebin.com/YvFyLJRq
  • 一篇英文论文* :p 。是的,你是对的,你的代码比我的更有意义。感谢分享!
  • 您希望我解释哪一行?
  • 你能解释一下这一行吗: let imageName = cross ? “十字架”:“没有”。我了解它的作用,但我不知道我可以声明这样的变量。这个声明方法叫什么?提前致谢!

标签: ios arrays swift3


【解决方案1】:

您在每次按下按钮时重置您的阵列,移动

var resultArray = [String!](repeating: nil, count:9)

函数外,所以它是在类级别定义的,所以每次都不会被重置。

【讨论】:

  • 为什么我没有看到我自己?我现在觉得很傻。感谢您的帮助,您太棒了!
  • 呵呵,一定要犯几次错误,然后你会记得注意它,所以我在开始编程时犯了很多次这个错误:P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
相关资源
最近更新 更多