Объект модели заполняется с помощью метода JSONDecoder.Поскольку необходимо передать его в табличное представление, мне нужно инициализировать локальную переменную типа KBArticle на стороне пользовательского интерфейса.Есть ли возможный способ инициализации объекта KBArticle без опций или прямого доступа к внутреннему массиву?
var kbArticle = KBArticle ()
Отсутствует аргумент для параметра «из» ввызов.Вставьте 'from: <#Decoder #>'
/// UI Side
var kbArticle = KBArticle()
override func viewDidLoad() {
super.viewDidLoad()
/// Web services call method
SDKCore.getInstance.getKbService().fetchKbArticles(with: topicID) { (result) in
switch result {
case .success(let kbArticle):
self.kbArticle = kbArticle
DispatchQueue.main.async {
self.tableView.reloadData()
}
case .failed(let e):
print("Error=\(e)")
}
}
}
// Model Class in SDK
public struct KBArticle: Codable {
public let id: Int
public let topic: String
public let articleCount: Int
public let articles: [Article]
}
public struct Article: Codable {
public let id: Int
public let subject: String
}
/// Method in SDK
public func fetchKbArticles(with topicId: Int, completionHandler: @escaping (ResultModel<KBArticle, Error>) -> Void) {
let request = GetKBArticles(topicId: topicId)
Networking.shared.performRequest(request) { (response) in
switch response {
case .success(let response):
do {
let decoder = JSONDecoder()
let result = try decoder.decode(KBArticle.self, from: response.data!)
completionHandler(.success(result))
} catch let error {
completionHandler(.failed(error))
}
case .failed(let error):
completionHandler(.failed(error))
}
}
}
Я должен использовать эту articles
внутри kbArticle
struct для предоставления моего источника данных tableview.Можно ли инициализировать kbArticle
объект без первичной инициализации, используя значения nil ???