array.insert 不会保存元素

Posted

技术标签:

【中文标题】array.insert 不会保存元素【英文标题】:array.insert won't save elements 【发布时间】: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 ? “十字架”:“没有”。我了解它的作用,但我不知道我可以声明这样的变量。这个声明方法叫什么?提前致谢! 【参考方案1】:

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

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

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

【讨论】:

为什么我没有看到我自己?我现在觉得很傻。感谢您的帮助,您太棒了! 呵呵,一定要犯几次错误,然后你会记得注意它,所以我在开始编程时犯了很多次这个错误:P

以上是关于array.insert 不会保存元素的主要内容,如果未能解决你的问题,请参考以下文章

Matlab保存忽略大单元格数组

Silverlight XML Save 不会覆盖整个文件

26输入一个链表,反转链表后,输出链表的所有元素。

Java---容器基础总结

java 持有对象总结

jQuery2.x源码解析(缓存篇)