2017-02-23 3 views
1

Ich arbeite an einer Quiz-App, die ihre Daten mithilfe verschiedener API-Aufrufe aus einer Datenbank bezieht. Aus irgendeinem Grund, wenn ich versuche, neue Daten zu ziehen (wir haben ein Quiz aus der Datenbank hinzugefügt/gelöscht), bekomme ich den alten JSON, bis ich die App auf dem Simulator deinstalliere und neu installiere. Ich drucke den JSON aus, der abgerufen wird, und das Telefon zeigt dieselben Quizfragen an, die abgerufen werden. Was komisch ist, ist, dass wenn wir die Anfrage im Browser machen, wir die aktualisierte JSON sofort nach der Bearbeitung der Datenbank sehen. Was noch seltsamer ist, ist, dass es gut funktionierte (aktualisiert, wann immer wir die Ansicht neu laden) bis heute, und unsere Leaderboard-Ansicht wird normal aktualisiert. Der Typ, der an der Datenbank arbeitet, schwört, dass er noch nichts geändert hat. Ich habe die Funktion, die den API-Aufruf in wenigen Wochen erledigt, nicht berührt. Irgendwelche Vorschläge würden sehr geschätzt werden. Ich setze die Methode, die ich verwende, unten.iOS App zieht nur neue Daten aus der Datenbank nach der Neuinstallation der App?

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

Nach getQuizTitlesURL Variable nur klare Anordnung von quizArray, so etwas wie dieses quizArray = [] – iParesh

+0

Dank für die Anregung, aber offenbar nicht, etwas zu ändern –

Antwort

0

Anscheinend ist die App Caching von Daten aus irgendeinem Grunde zu starten. Ich fügte diese zwei Zeilen hinzu und es reparierte es.

Aber wenn Sie eine Anfrage stellen, können Sie diese Zeile einfach hinzufügen, nachdem Sie die Anfrage initialisiert haben.

var request: URLRequest = URLRequest(url: getQuestionsFromIdURL!) 
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringLocalCacheData 
Verwandte Themen