如何将数据存储在一切都是静态的 class 中?
How can data be stored inside a class where everything is static?
我有一个 class 是由这样的人开发的
class CarsDatabase {
private static var cars: [Car] = []
static func saveCar(vehicle: Car) {
cars.append(vehicle)
}
然后我被要求从 CSV 文件中读取汽车并使用 CarsDatabase
中的方法 saveCar
将其保存到“数据库”。
从 CSV 读取发生在另一个名为 FetchCarData
的 class 上。
class FetchCarData {
private let fileName = "cars.csv"
func readData() {
// I was asked to implement this and save to the database
// Using saveCar from CarsDatabase
// so I read all rows on the text file and I have a loop to fill
// the database
for row in rows {
let newCar = Car(name:row[0], brand:row[1], price:row[2])
// here is my problem
// save car is static and must be called like
CarsDatabase.saveCar(vehicle:newCar)
// how can I store that on something that is not an instance?
}
CarsDatabase.saveCar(vehicle:newCar)
不是实例,将在下一次循环交互时消失。我怎样才能将它存储在不是实例的东西上?
告诉我不要从几个函数中删除任何 static
关键字。
我说不可能
另一种方法是使用 singleton 模式。
class CarsDatabase {
static let shared = CarsDatabase()
private var cars: [Car] = []
private init() {}
func saveCar(vehicle: Car) {
cars.append(vehicle)
}
}
使用CarsDatabase.shared
访问实例。
这样省车:
let car = Car()
CarsDatabase.shared.saveCar(vehicle: car)
我有一个 class 是由这样的人开发的
class CarsDatabase {
private static var cars: [Car] = []
static func saveCar(vehicle: Car) {
cars.append(vehicle)
}
然后我被要求从 CSV 文件中读取汽车并使用 CarsDatabase
中的方法 saveCar
将其保存到“数据库”。
从 CSV 读取发生在另一个名为 FetchCarData
的 class 上。
class FetchCarData {
private let fileName = "cars.csv"
func readData() {
// I was asked to implement this and save to the database
// Using saveCar from CarsDatabase
// so I read all rows on the text file and I have a loop to fill
// the database
for row in rows {
let newCar = Car(name:row[0], brand:row[1], price:row[2])
// here is my problem
// save car is static and must be called like
CarsDatabase.saveCar(vehicle:newCar)
// how can I store that on something that is not an instance?
}
CarsDatabase.saveCar(vehicle:newCar)
不是实例,将在下一次循环交互时消失。我怎样才能将它存储在不是实例的东西上?
告诉我不要从几个函数中删除任何 static
关键字。
我说不可能
另一种方法是使用 singleton 模式。
class CarsDatabase {
static let shared = CarsDatabase()
private var cars: [Car] = []
private init() {}
func saveCar(vehicle: Car) {
cars.append(vehicle)
}
}
使用CarsDatabase.shared
访问实例。
这样省车:
let car = Car()
CarsDatabase.shared.saveCar(vehicle: car)