ios - 在序列之间存储数据

标签 ios swift xcode

我有一个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()
接下来做什么?
您应该阅读有关单例设计模式的优缺点的更多信息,以了解何时使用和何时不使用:
  • What Is a Singleton and How To Create One In Swift
  • Singleton in Swift
  • Swift Singletons: A Design Pattern to Avoid (With Examples)
  • 关于ios - 在序列之间存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63968865/

    相关文章:

    ios - 检测滚动控件

    iphone - 我的 Phonegap 项目中没有 PhoneGap.plist

    ios - 手动推送的 View Controller 卡住应用程序

    ios - Alamofire/Moya SSL 请求因 ATS 系统信任失败而失败。 X 的系统信任失败

    ios - 打字时搜索栏消失

    c - 如果我添加了这样的搜索路径 $(SRCROOT)/Library,我该如何调用库文件夹中文件夹内的头文件?

    ios - 以编程方式更改 Collection View 单元格中标签的字体

    ios - 如何放大和缩放uiimage

    c# - 我们可以从手机(Android/iOS)中选择一个图像并使用通用代码(Xamarin Forms)将其上传到服务器吗?

    ios - 在 iOS 11 中防止 UINavigationController 向上过渡并带有偏移量?