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

时间:2015-04-14 04:08:55

标签: ios arrays xcode swift uiapplicationdelegate

我是Swift的新手,我用Swift开始了我的新项目。我在加载viewcontroller时遇到了延迟问题。

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

      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

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

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

感谢任何建议!

1 个答案:

答案 0 :(得分:1)

您可能希望创建一个单独的数据管理器类,而不是将其存储在应用程序委托中。你可以使用这样的东西:

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声明,以便使用字典的简短形式。