2015-10-04 90 views
1

我有两个不同的视图控制器,它们都在运行时在viewDidLoad中从Internet下载相同的JSON文件。如何防止在运行时下载相同的JSON文件?

我想阻止他们下载两次相同的文件,但是使用由初始视图控制器下载的第一个JSON文件将它传递给第二个视图控制器。

这样可以缩短我的应用加载时间。

+1

做一个单身人士下载并保存JSON,并在viewDidLoad中去和从单身中获取它。 – ColdSteel

回答

2

要实现此目标,您需要制定业务逻辑,例如从MVC的C(控制器)独立下载JSON。

通常会添加一个名为XXXModel的类文件。将此模型用作单例。在这个单例中,您需要实现下载和保存JSON数据的功能。您最好使用以URL命名的密钥将JSON数据保存到本地。

而在你的控制器中,总是调用单例来下载JSON。

1

您可以创建一个url作为key和bool作为值的单例字典,然后将下载的url保存为true。这样,你可以跟踪你的网址的内容

var isDownloaded = [NSURL : Bool] // singleton in appdelegate 

    if let url = NSURL(string: urlString) { 
     if isDownloaded[url] != nil && !isDownloaded[url]! { 
     if let data = try? NSData(contentsOfURL: url, options: []) { 
      let json = JSON(data: data) 
      isDownloaded.updateValue(true, forKey: url) //mark it back to false if you delete the data for some reason. 
     } 
     } else { 
      //get it from memory 
     } 
    }