2015-10-04 176 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 
     } 
    }