我有一个tableView,其中装有汽车名称。用户可以添加,删除单元格。CarData.swift
:
struct CarData {
var name: String
}
Cars.swift
:class Cars{
var list = [
CarData(name: "Toyota Corolla"),
CarData(name: "BMW 3")
]
}
ListViewController.swift
:class ListViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
var carsList = Cars()
var cars = [CarData]()
override func viewDidLoad() {
super.viewDidLoad()
cars = carsList.list
.
.
.
当segue将用户带到ListViewController
时,由于cars
数组的初始化方式,列表始终会相同。我想要的是在列表之间保存数据的列表,而不是每次都重写它。我有很多问题,所以到处发送cars
数组似乎不是一个好主意。我该怎么办?
最佳答案
全球访问!
对于您的乞求级别,您可以创建一个单例对象以在整个应用程序中全局访问它。
class CarsManager
{
// MARK: Init
private init() { }
// MARK: Properties
static var shared = CarsManager()
private var cars: [CarData] = []
// MARK: Methods
func addNewCar(_ car: CarData)
{
cars.append(car)
}
func getCars() -> [CarData]
{
return cars
}
}
用法您可以在任何屏幕上将汽车添加到列表中:
let someCar = CarData(name: "Toyota Corolla")
CarsManager.shared.addNewCar(someCar)
然后,您可以从所有屏幕轻松访问列表:CarsManager.shared.getCars()
接下来做什么?您应该阅读有关单例设计模式的优缺点的更多信息,以了解何时使用和何时不使用:
关于ios - 在序列之间存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63968865/