全局数组未追加

时间:2019-04-10 17:07:21

标签: ios swift

我是Swift开发的新手,我正在一个朋友的项目中进行更多的实践,以处理全局变量和数组(到目前为止,这是我的弱点)。想法是将带有时间戳的选定表视图行中的信息传递给数组,然后在另一个视图控制器上的另一个表视图上打印该数组。

我尝试在UIKit下方和类上方使用结构和全局变量来在所有视图控制器中访问它。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    dopText = indexPath.item
    let formatter = DateFormatter()
    formatter.dateFormat = ("HH:mm")
    let stamp = formatter.string(from: Date())
    interventions.append("\(stamp) Dog is in the contest \(dopDose[dopText])")

此功能可将要打印的项目调用到下一个屏幕

["11:30 Golden Retriever entered the contest."]
["11:30 Golden Retriever entered the contest."]
["11:30 Golden Retriever entered the contest."]

导航到该视图控制器时,它将在调试区域中打印出来

import UIKit

var interventions:[String] = []

class InterventionsPerformedVC: UIViewController, UITableViewDelegate, UITableViewDataSource{
    override func viewDidLoad() {
        super.viewDidLoad()
    }

这是列出全局变量的地方。我还使用了一个结构来使变量(如下所示)具有相同的结果

struct globalInterventions{
    static var interventions = [String]()
}

很抱歉,如果我以错误的方式进行操作。我是编码和Swift的新手。欢迎任何建议。我不想完全更改他的源代码,但是任何有益的建议我都欢迎。

唯一发生的事情是第一次选择tableview单元时,该项被添加到数组中并在下一个屏幕上打印,但是它连续3次在调试区域中打印,然后不能添加其他项到数组。

1 个答案:

答案 0 :(得分:0)

swift中的单个字母应具有一个专用的初始化程序,因此除单个共享实例外,没有人可以创建一个实例。单个实例通常称为shared。如果希望每次添加项目时都打印该值,则应使用didSet

struct Interventions {
    static var shared: [String] = [] {
        didSet {
            shared.forEach{print($0)}
        }
    }
    private init() { }
}