从所有Swift文件访问数组

时间:2016-02-09 12:25:26

标签: ios iphone swift ipad

我有一个存储在类中的数组,可以从Internet下载其对象。我的课程设置如下:

class StockManager {
    var managerStock: [Dictionary<String, String>] {
        return downloadStockFromDatabase()
    }
    ...
}

我从项目中的其他Swift文件中访问managerStock,但无论我之前是否使用过该变量(即调用函数downloadStockFromDatabase),它总是会重新下载库存:

let stockManager = StockManager()
print(stockManager.managerStock)

我如何确保managerStock只下载一次,我可以在任何文件中使用它?

2 个答案:

答案 0 :(得分:1)

这是一个正确的软件模式使用问题。我建议:

  • 使StockManager成为单身,因此您将始终访问相同的实例
  • 初始化它,例如在AppDelegate中,即确保它对整个运行时保持活动
  • 提示:懒惰地打电话给managerStock,即只有当你真的需要它而不是作为初始化的一部分时

答案 1 :(得分:1)

正如ff10和holex建议的那样,让你的班级成为单身人士。它看起来像这样:

class StockManager {
    static let sharedInstance = StockManager ()
    var managerStock: [Dictionary<String, String>] {
        return downloadStockFromDatabase()
    }
    ...
}

然后使用静态sharedInstance属性访问它:

print(StockManager.sharedInstance.managerStock)