2017-02-23 5 views
1

私はさまざまなAPI呼び出しを使用してデータベースからデータをプルするクイズアプリを開発中です。何らかの理由で新しいデータを取得しようとしているとき(データベースからクイズを追加/削除したとき)、私はアンインストールしてからシミュレータに再インストールするまで古いJSONを取得します。私は取り出されたJSONを印刷していて、電話機は引っ張られる同じクイズを表示しています。変わった点は、ブラウザでリクエストを行うと、データベースを編集した直後に更新されたJSONが表示されることです。私たちは今日まで、それが正常に動作していた(ビューをリロードするたびに更新されています)、リーダーボードビューは正常に更新されています。データベースに取り組んでいる人は何も変えていないと誓っていますが、数週間で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

だけで明確なquizArrayの配列、提案のためにこのような何かquizArray = [] – iParesh

+0

おかげで、しかし、何も変更していないようでした –

答えて

0

どうやら何らかの理由でキャッシュデータを起動アプリ。私はこれらの2行を追加し、それを修正しました。

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

しかし、リクエストしている場合は、リクエストを初期化した後にこの行を追加することができます。 getQuizTitlesURL変数の後

var request: URLRequest = URLRequest(url: getQuestionsFromIdURL!) 
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringLocalCacheData 
関連する問題