Swift 5: указанные данные недействительны в формате JSON (загрузка данных из API в представление таблицы)IOS

Программируем под IOS
Ответить
Anonymous
 Swift 5: указанные данные недействительны в формате JSON (загрузка данных из API в представление таблицы)

Сообщение Anonymous »

Я пытаюсь ПОЛУЧИТЬ некоторые данные из API. Он отлично извлекает данные, когда я подключаю функцию к IBAction, но не работает, когда я выполняю его в viewDidLoad() как обычную функцию.
Я был надеясь сгенерировать его по мере загрузки приложения, чтобы я мог отображать их в виде таблицы вместо того, чтобы каждый раз нажимать кнопку для его загрузки.
После этого я получаю сообщение об ошибке попытка выполнить функцию из viewDidLoad():

"Данные не являются допустимыми в формате JSON"

Ниже приведены коды для справки:

Код: Выделить всё

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()
}
}
Переменная данных, которая возвращается (выполняется через IBAction/нажатие кнопки):

[ClaimApp.Claims(id : 1, submit_date: "2020-02-28T13:50:41.000+08:00", статус: "в ожидании"), ClaimApp.Claims(id: 2, submit_date: "2020-02-28T13:53:38.000+08:00", статус: "в ожидании"), ClaimApp.Claims(id: 3, submit_date: "2020-02-28T14:21:46.000+08:00" , статус: «в ожидании»), ClaimApp.Claims(id: 4, submit_date: «2020-02-28T14:22:07.000+08:00», статус: «ожидает»)]

Возвращается ошибка (выполняется посредством вызова обычная функция из viewDidLoad()):

Кажется, есть ошибка:

dataCorrupted(Swift.DecodingError.Context(codingPath: [], debugDescription: «Данные данные не являются допустимыми в формате JSON.», базовая ошибка: Необязательный (Error Domain=NSCocoaErrorDomain Code=3840 «Недопустимое значение вокруг символа 0». UserInfo={ NSDebugDescription=Неверное значение около символа 0.})))

P.S/ Я новичок здесь, извините, если есть какие-либо недопонимания или путаницы.

Подробнее здесь: https://stackoverflow.com/questions/604 ... table-view
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»