Итак, у меня есть пейджинговое приложение с 3 страницами, и у каждой страницы есть подробное представление. Все три страницы (представления) имеют доступ к отдельным файлам данных json. Все работало нормально, пока я не настроил третий вид страницы и подробный вид. Теперь приложение не может получить доступ к файлу JSON для второго просмотра. Он получает путь к файлу и генерирует локальный URL-адрес для файла, но либо не находит файл, либо не извлекает из него данные. Ниже приведен код:
func downloadJSON(completed: @escaping () -> ()) {
let path = Bundle.main.path(forResource: "Speedways", ofType: "json")
let url = URL(fileURLWithPath: path!)
URLSession.shared.dataTask(with: url) { data, response, error in
guard let data = data, error == nil, response != nil else {
return
}
do {
let decoder = JSONDecoder()
allspeedways = try decoder.decode([Speedways].self, from: data)
var s = 0
for speedway in allspeedways {
self.TableData.append(speedway[s].speedway.capitalized)
s += 1
}
} catch {
print(error)
}
}.resume()
DispatchQueue.main.async {
completed()
}
}
Это модель данных:
typealias Speedways = [Speedway]
struct Speedway: Codable {
let speedway, location, sizeOfTrack: String
let trackEvents, trackevents: [Trackevent]?
enum CodingKeys: String, CodingKey {
case speedway = "Speedway"
case location = "Location"
case sizeOfTrack = "SizeOfTrack"
case trackEvents = "TrackEvents"
case trackevents
}
}
struct Trackevent: Codable {
let trackevent, date, pole, winner: String
let playoff: String
}
А это данные json (почему это странно, я не знаю):
[{"Speedway":"Daytona International Speedway",
"Location":"Daytona, Fla",
"SizeOfTrack":"2.5 miles",
"TrackEvents" :[{
"trackevent" : "Advance Auto Parts CLASH AT DAYTONA",
"date" : "Sun, Feb 11",
"pole" : "Austin Dillon",
"winner" : "Brad Keselowski",
"playoff" : "No"
},
.
.
.
{
.
.
.
}]
},
{
"Speedway":"Atlanta Motor Speedway",
"Location":"Hampton, Ga",
"SizeOfTrack":"1.54 miles",
"trackevents" :[{
"trackevent" : "Folds of Honor QuikTrip 500",
"date" : "Sun, Feb 25",
"pole" : "Kyle Busch",
"winner" : "Kevin Harvick",
"playoff" : "No"
}]
},
Ошибка появляется здесь во время выполнения с сообщением: «Поток 1: Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения»
speedwaysTableView.delegate = self
speedwaysTableView.dataSource = self
У кого-нибудь есть идеи?