2017-02-23 38 views
1

我正在使用各種AP​​I調用從數據庫中提取數據的測驗應用程序。出於某種原因,當我嘗試提取新數據時(我們已經添加/刪除了數據庫中的測驗),我得到舊的JSON,直到我卸載並重新安裝到模擬器上。我正在打印檢索到的JSON,手機顯示的是相同的測驗。奇怪的是,如果我們在瀏覽器中執行請求,我們會在編輯數據庫後立即看到更新的JSON。 What weirder是,它工作正常(更新,每當我們重新加載視圖),直到今天,我們的排行榜視圖正常更新。在數據庫上工作的人發誓他沒有改變任何東西,但我沒有觸及幾周內處理API調用的函數。任何建議將不勝感激。我將把我在下面使用的方法。iOS應用程序重新安裝應用程序後,只從數據庫中提取新數據?

func getQuizTitles() { 
    let getQuizTitlesURL = URL(string: "(api_url_here)") 
    URLSession.shared.dataTask(with: getQuizTitlesURL! as URL, completionHandler: {(data, response, error) in 
     print(response as Any) 
     do{ 
      if let parsedData = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSArray { 
       print(parsedData) 

       var title:String 
       var creator:String 
       var length:Int 
       var quizId:Int 
       let questions:[Question] = [] 

       for index in 0...parsedData.count-1 { 
        let aObject = parsedData[index] as! [String : AnyObject] 
        title = (aObject["Title"] as? String)! 
        if aObject["Creator"] as? String == nil { 
         creator = "" 
        }else{ 
         creator = aObject["Creator"] as! String 
        } 
        //length = aObject["Length"] 
        length = 0 
        quizId = (Int((aObject["ID"] as? String)!)!) 
        let quiz:Quiz = Quiz(title: title, creator: creator, length: length, quizId: quizId , questions: questions) 
        self.quizArray.append(quiz) 
       } 
      } 

      if let HTTPResponse = response as? HTTPURLResponse { 
       print(HTTPResponse) 
       let statusCode = HTTPResponse.statusCode 
       if statusCode == 200 { 
        print("Success") 
       } 
      } 
     }catch let error as NSError { 
      print(error) 
     } 
     DispatchQueue.main.async { 
      self.tableViewOutlet.reloadData() 
     } 
    }).resume() 

} 
+0

getQuizTitlesURL變量只是明確quizArray的陣列,像在此之後quizArray = [] – iParesh

+0

感謝您的建議,但似乎沒有任何改變 –

回答

0

顯然,應用程序開始緩存數據出於某種原因。我添加了這兩行,並修復了它。

let configuration = URLSessionConfiguration.default 
configuration.requestCachePolicy = NSURLRequest.CachePolicy.reloadIgnoringLocalCacheData 

但是,如果您提出請求,則可以在初始化請求後添加此行。

var request: URLRequest = URLRequest(url: getQuestionsFromIdURL!) 
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringLocalCacheData 
相關問題