访问应用程序委托变量延迟视图加载 swift
Accessing application delegate variable delays view loading in swift
我是 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
感谢任何建议!
您可能想要创建一个单独的数据管理器 class 而不是将其存储在应用委托中。你可以使用这样的东西:
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 class 来存储内容是一个很好的做法。我还重写了您的 allTerms 声明以使用字典的缩写形式。
我是 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
感谢任何建议!
您可能想要创建一个单独的数据管理器 class 而不是将其存储在应用委托中。你可以使用这样的东西:
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 class 来存储内容是一个很好的做法。我还重写了您的 allTerms 声明以使用字典的缩写形式。