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()
}
Nach getQuizTitlesURL Variable nur klare Anordnung von quizArray, so etwas wie dieses quizArray = [] – iParesh
Dank für die Anregung, aber offenbar nicht, etwas zu ändern –