Swift 5: Die angegebenen Daten waren kein gültiges JSON (Laden von Daten von der API in die Tabellenansicht)IOS

Programmierung für iOS
Guest
 Swift 5: Die angegebenen Daten waren kein gültiges JSON (Laden von Daten von der API in die Tabellenansicht)

Post by Guest »

Ich versuche, einige Daten von einer API abzurufen. Es ruft die Daten einwandfrei ab, wenn ich die Funktion mit einer IBAction verbinde, aber es funktioniert nicht, wenn ich sie bei viewDidLoad() als normale Funktion ausführe.
Das war ich Ich hoffe, es beim Laden der App zu generieren, damit ich sie in einer Tabellenansicht anzeigen kann, anstatt jedes Mal auf eine Schaltfläche klicken zu müssen, um sie zu laden.
Ich erhalte danach eine Fehlermeldung versucht, die Funktion auszuführen viewDidLoad():

"Die angegebenen Daten waren kein gültiges JSON"

Im Folgenden finden Sie die Codes als Referenz:

Code: Select all

struct Claims: Decodable {
let id: Int
let submission_date: String
let status: String
init(json: [String:Any]) {
id = json["id"] as? Int ?? -1
submission_date = json["submission_date"] as? String ?? ""
status = json["status"] as? String ?? ""
}
}

class DashboardController: UIViewController, GIDSignInUIDelegate {

var claimSummaryArray: [ClaimProperties] = []
let appDelegate = UIApplication.shared.delegate as! AppDelegate

override func viewDidLoad() {
getData()
}

func getData() {
guard let urlString = URL(string: "https://claim.ademo.work/claims/") else { return }
var requestAPI = URLRequest(url: urlString)

requestAPI.httpMethod = "GET"
requestAPI.addValue("application/json", forHTTPHeaderField: "Content-Type")
requestAPI.addValue("application/json", forHTTPHeaderField: "Accept")
requestAPI.setValue("Bearer \(appDelegate.userAppToken)", forHTTPHeaderField: "Authorization")

let task = URLSession.shared.dataTask(with: requestAPI) { (data, response, error) in
if let data = data {
do {
let json = try JSONDecoder().decode([Claims].self, from: data)
print (json)
} catch let error {
print("Seems to have an error: \(error)")
}
}
}
task.resume()
}
}
Datenvariable, die zurückgegeben wird (ausgeführt über IBAction / Klicken auf eine Schaltfläche):

[ClaimApp.Claims(id : 1, Einreichungsdatum: „2020-02-28T13:50:41.000+08:00“, Status: „ausstehend“), ClaimApp.Claims(id: 2, Einreichungsdatum: „2020-02-28T13:53:38.000+08:00“, Status: „ausstehend“), ClaimApp.Claims(id: 3, Einreichungsdatum: „2020-02-28T14:21:46.000+08:00“, Status : „ausstehend“), ClaimApp.Claims(id: 4, Einreichungsdatum: „2020-02-28T14:22:07.000+08:00“, Status: „ausstehend“)]

Fehler, der zurückgegeben wird (durch Aufruf ausgeführt). eine normale Funktion von viewDidLoad()):

Scheint einen Fehler zu haben:

dataCorrupted(Swift.DecodingError.Context(codingPath: [], debugDescription: „Die angegebenen Daten waren kein gültiges JSON.“, zugrundeliegender Fehler: Optional(Error Domain=NSCocoaErrorDomain Code=3840 „Ungültiger Wert um Zeichen 0.“ UserInfo={ NSDebugDescription=Ungültiger Wert um Zeichen 0.})))

P.S./ Ich bin neu hier, bitte entschuldigen Sie, falls es Missverständnisse oder Verwirrungen gibt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post