我是Swift的新手,我已经从Swift开始了我的新项目。加载视图控制器时,我遇到了延迟问题。

在应用程序委托我有一个变量

      var  allTerms: [Dictionary<String, AnyObject>]?


这allTerms填充了900Kb本地json文件中的数据。 json数据总数为800。

到目前为止,我有一个主屏幕和第二个视图。在主屏幕上,当我导航到第二个屏幕时,我需要从应用程序代理访问allTerms。参考出色的教程,我能够从应用程序委托访问allTerms变量

        let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate!
        self.tableData = (appDelegate.allTerms! as NSArray) as? Array


但是这样做会导致加载secondview明显延迟,如果我注释该行则不会发生

self.tableData = (appDelegate.allTerms! as NSArray) as? Array


感谢任何建议!

最佳答案

您可能要创建一个单独的数据管理器类,而不是将其存储在应用程序委托中。您可以使用如下形式:

class DataManager {
var  allTerms: [[String:AnyObject]]?

class var sharedInstance: DataManager {
    struct Singleton {
        static let instance = DataManager()
    }
    return Singleton.instance
}
// You can access allTerms by calling DataManager.sharedInstance.allTerms

}


这可能不会解决您的滞后问题,但这是使DataManager类存储事物的一种好习惯。我还将您的allTerms声明重写为字典的缩写形式。

10-01 16:26