访问应用程序委托变量延迟视图加载 swift



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

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

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

此 allTerm 由来自 900Kb 的本地 json 文件的数据填充。总 json 数据计数为 800。

到目前为止,我有一个主屏幕和第二个视图。当我导航到第二个屏幕时,我需要从主屏幕访问所有条款 应用程序委托.参考很棒的教程,我能够从应用程序委托访问 allTerm 变量

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

但是这样做会导致加载第二视图时出现明显的延迟,如果我评论该行,则不会发生这种情况

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 类来存储内容。我还重写了您的 allTerm 声明以使用字典的缩写形式。