我是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次在调试区域中打印,然后不能添加其他项到数组。
答案 0 :(得分:0)
swift中的单个字母应具有一个专用的初始化程序,因此除单个共享实例外,没有人可以创建一个实例。单个实例通常称为shared
。如果希望每次添加项目时都打印该值,则应使用didSet
:
struct Interventions {
static var shared: [String] = [] {
didSet {
shared.forEach{print($0)}
}
}
private init() { }
}