У меня есть следующий API, ответом которого является Массив словаря https://5e99a9b1bc561b0016af3540.mockapi.io/jet2/api/v1/blogs?page= 1 & limit = 10.
Я создал для этого модель следующим образом
import Foundation
// MARK: - BlogElement
struct BlogElement: Codable {
let id, createdAt, content: String
let comments, likes: Int
let media: [Media]
let user: [User]
}
// MARK: - Media
struct Media: Codable {
let id, blogID, createdAt: String
let image: String
let title: String
let url: String
enum CodingKeys: String, CodingKey {
case id
case blogID = "blogId"
case createdAt, image, title, url
}
}
// MARK: - User
struct User: Codable {
let id, blogID, createdAt, name: String
let avatar: String
let lastname, city, designation, about: String
enum CodingKeys: String, CodingKey {
case id
case blogID = "blogId"
case createdAt, name, avatar, lastname, city, designation, about
}
}
typealias Blog = [BlogElement]
my класс обслуживания следующий:
import Foundation
import Alamofire
class Webservice: NSObject {
static let shared = Webservice()
func getData(with url: String, completion:@escaping (_ data: Blog?, _ error: Error?) -> Void) {
AF.request(url).responseData { (responseData) in
switch responseData.result {
case .success(let data):
//Apply string encoding as response is not UTF 8 formatted
let string = String(decoding: data, as: UTF8.self)
if let datastr = string.data(using: String.Encoding.utf8) {
//Map response data into model
do {
let blogData = try JSONDecoder().decode(Blog.self, from: datastr)
completion(blogData, nil)
} catch let error as NSError {
print(error)
completion(nil, error)
}
}
case .failure(let error):
completion(nil, error)
}
}
}
}
Я не уверен, как создавать и передавать значения для просмотра модели.
Спасибо