Клас моделі Json4swift - швидкий, модельний

Я новачок у швидкому, використовуючи інструмент json4swift, щоб зробити клас моделі. Я хотів би знати, як отримати дані від модельного класу, мені вдалося зібрати елементи до моделі класу, використовуючи код нижче.

  let responseModel = Json4Swift_Base(dictionary: searchResultsData)

Моя відповідь json:

{
"success": true,
"categorys": [
{
"categoryId": 1,
"categoryName": "Electricians                                      "
},
{
"categoryId": 2,
"categoryName": " Drivers                                          "
},
{
"categoryId": 3,
"categoryName": " Plumbers                                         "
},
{
"categoryId": 4,
"categoryName": "Carpenters                                        "
},
{
"categoryId": 5,
"categoryName": "Automobile works                                  "
}
]
}

Інструмент Json4swift зробив два класи - клас Json4Swift_Base та Categorys. Мені потрібно отримати від модельного класу.

Відповіді:

1 для відповіді № 1

Якщо ви хочете дізнатися Swift, я пропоную вам забути json4swift.

По-перше, ви повинні створити свої власні моделі: Category і Response

Категорія:

struct Category {
let id: Int
let name: String
}

Відповідь:

struct Response {
let success: Bool
let categories: [Category]
}

По-друге, потрібно ініціалізувати ваші моделі за допомогою JSON. Ми збираємося створити протокол для цього:

typealias JSONDictionary = [String : Any]

protocol JSONDecodable {
init?(dictionary: JSONDictionary)
}

Ваші моделі повинні реалізувати цей протокол, тому ми додаємо розширення:

Розширення категорії:

extension Category: JSONDecodable {
init?(dictionary: JSONDictionary) {
guard let id = dictionary["categoryId"] as? Int,
let name = dictionary["categoryName"] as? String else {
return nil
}
self.id = id
self.name = name
}
}

Розширення відповіді:

extension Response: JSONDecodable {
init?(dictionary: JSONDictionary) {
guard let success = dictionary["success"] as? Bool,
let jsonCategoriesArray = dictionary["categorys"] as? [JSONDictionary] else {
return nil
}
self.success = success

self.categories =
jsonCategoriesArray.flatMap{ jsonCategoryDictionary in
Category(dictionary: jsonCategoryDictionary)
}
}
}

Тепер ви можете написати:

let response = Response(dictionary: jsonResponse)

if let response = response {
let success = response.success
let categories = response.categories
let firstCategory = categories[0]
// ...
}