连续追加到数组的末尾

时间:2019-05-15 13:25:02

标签: ios swift xcode

每次我按下按钮时,我都试图将新数字附加到数组的末尾。我已经尝试了很多不同的方法,但是我做不到。

我尝试了追加,插入,创建空数组等等。

import UIKit
import Foundation

var num1 = 0

class ViewController: UIViewController {

 @IBAction func button(_ sender: UIButton) {

    var digitCounts = Array(repeating: 0, count: 10)
    var number_list = [1,2,3]

    if num1 >= 0 {

    digitCounts.insert(3, at: num1)
    print(digitCounts)
    number_list.append(num1)
    num1 += 1
    print(num1)
    print(number_list)
    } 
}

结果看起来像

  

在第一次按下按钮[1,2,3,4]之后启动数组[1,2,3]   第三次按下按钮后[1,2,3,4,5]   [1,2,3,4,5,6]

4 个答案:

答案 0 :(得分:0)

首先,您应将var number_list声明为ViewController的属性:

class ViewController: UIViewController {
    var number_list = [1,2,3]
}

否则,每次调用var number_list时都会创建默认值button(_ sender:)

并对按钮使用以下处理程序:

@IBAction func button(_ sender: UIButton) {
    number_list += number_list.last.flatMap { [$0+1] } ?? []
    print(number_list)
}

答案 1 :(得分:0)

好,现在您已经显示了完整的代码,我可以看到问题所在。每次单击按钮都在创建新的数组,但是在此函数之外存储了num1

尝试一下:

import UIKit
import Foundation


class ViewController: UIViewController {

 var num1 = 0
 var digitCounts = Array(repeating: 0, count: 10)
 var number_list = [1,2,3]

 @IBAction func button(_ sender: UIButton) {
    if num1 >= 0 {
        digitCounts.insert(3, at: num1)
        print(digitCounts)

        number_list.append(num1)
        num1 += 1
        print(num1)
        print(number_list)
    } 
}

通过将数组存储为类的属性,而不是将其存储在函数中,它们将通过多次单击而保持不变

答案 2 :(得分:0)

您必须将数组设置为全局并进行如下更改

import UIKit
import Foundation

var num1 = 0

class ViewController: UIViewController {

    var number_list = [1,2,3]

    @IBAction func button(_ sender: UIButton) {
        var number = number_list.last ?? 0
        number += 1
        number_list.append(number)
        print(number_list)
    }
}

答案 3 :(得分:0)

如果您不是多线程的,一个简单的解决方案是记住最后一个数字,而不必检查数组中的最后一个元素:

class ViewController: UIViewController {

    var number_list = [1, 2, 3]
    var num1 = 3

    @IBAction func button(_ sender: UIButton) {
        number += 1
        number_list.append(number)
        print(number_list)
    }
}