Swift 5: Die angegebenen Daten waren kein gültiges JSON (Laden von Daten von der API in die Tabellenansicht)
Posted: 18 Jan 2025, 21:40
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:
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.
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()
}
}
[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.