В моем приложении есть следующая функция:
// MARK: - Download JSON from ToH webserver
func downloadJSON(completed: @escaping () -> ()) {
let url = URL(string: "http://tourofhonor.com/BonusData.json")
URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error == nil {
do {
self.tohBonuses = try JSONDecoder().decode([jsonBonuses].self, from: data!)
DispatchQueue.main.async {
completed()
}
} catch {
print("JSON Download Failed")
}
}
}.resume()
}
В консоли, когда вызывается эта функция, я получаю ошибку JSON Download Failed. Я не вижу никаких других ошибок вокруг этого все же. Некоторый поиск в Google указал мне на Диагностику CFNetwork. Я запустил приложение с этим набором как 1, так и 3, но ничего очевидного не выделяется. В обоих случаях я вижу
Ответ: HTTP / 1.1 200 OK
в моей консоли, и когда для ведения журнала установлено значение 3, я вижу, как текут необработанные данные, но это не содержимое моего JSON (я предполагаю, что оно загружается в виде двоичного файла).
Одна вещь, которую я заметил, когда мне было задано значение 1, это строка:
2018-05-02 22: 37: 43.079258-0700 PhotoPillion [88117: 42881245] CFNetwork
Диагностика [1:69] 22: 37: 43,079 {
Закончил: (ноль)
Загрузчик: {url = http://tourofhonor.com/BonusData.json, cs = 0x0} от начала до начальной загрузки: 0,060393 с
общее время: 0.747829с
Всего байт: 547511
Похоже, это означает, что он загрузил 578 КБ данных, что соответствует размеру файла JSON на диске. Поэтому я не уверен, что именно идет не так.
Я не совсем уверен, каким будет следующий шаг.
РЕДАКТИРОВАТЬ, чтобы добавить некоторые дополнительные детали: До моей функции выше у меня есть var tohBonuses = [jsonBonuses]()
в моем коде, а затем, что jsonBonuses () является ссылкой на файл jsonBonuses.swift, который выглядит следующим образом:
import Foundation
struct jsonBonuses:Decodable {
let bonusCode: String
let category: String
let name: String
let value: Int
let city: String
let state: String
let flavor: String
let imageBase64: String
}