Ваш код неправильно использует SwiftJSON API.Виновником является строка
jsonObject as! Events
Если бы вы действительно писали код безопасным способом, используя динамический оператор понижения as?
, компилятор с радостью объявил бы вам, что тип Events
и тип jsonObject
являются частями отдельных иерархий типов, и, следовательно, обратное преобразование всегда завершится неудачей.
Согласно документации SwiftJSON, которая может быть найдена на https://github.com/SwiftyJSON/SwiftyJSON, платформа управляет десериализацией, однако ее базовый API не предоставляет никакихобъекты населенных пунктов и, следовательно, это задача программистов.
Скажем, тип Events
имеет 2 сохраненных свойства, let string: String
и let int: Int
.Чтобы создать Events
объект из проанализированного JSON-объекта, вам нужно извлечь значения вручную как таковые
let string = jsonObject["name"].string
let int = jsonObject["int"].int
, а затем передать эти значения в свой собственный конструктор, написанный как таковой
let events = Events(string, int)
Только после этого у вас фактически будет объект «События», который вы можете использовать.
Редактировать: также с момента выхода Swift 4 существует протокол Codable
и JSONDecoder
type, который предоставляет надежные, гибкие и безопасные для типов средства для декодирования ваших полезных нагрузок json, представленных Data
объектом, и вам, вероятно, следует отказаться от SwiftyJSON, потому что это ненужная зависимость.