【问题标题】: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

感谢任何建议!

【问题讨论】:

    标签: ios arrays xcode swift uiapplicationdelegate


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 2021-05-30
      • 2014-01-15
      • 1970-01-01
      相关资源
      最近更新 更多