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

Posted

技术标签:

【中文标题】快速访问应用程序委托变量延迟视图加载【英文标题】:Accessing application delegate variable delays view loading in swift 【发布时间】:2015-04-14 04:08:54 【问题描述】:

我是 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

感谢任何建议!

【问题讨论】:

【参考方案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 声明以使用字典的简写形式。

【讨论】:

以上是关于快速访问应用程序委托变量延迟视图加载的主要内容,如果未能解决你的问题,请参考以下文章

呈现模态视图控制器的延迟

ViewController 委托和 viewWillDisappear 计时问题

使用自定义集合视图布局快速配置动态单元格高度

在可扩展的 QML 应用程序中访问列表视图索引

应用程序委托中的全局变量未保存

Catel 延迟加载包含视图/视图模型的程序集