Доступ к данным структуры после JSON разбора, Swift - PullRequest
1 голос
/ 15 марта 2020

Я застрял на следующем: я запустил этот код

AF.request(url, method: .get).responseDecodable(of: UserInfo.self) { response in
        debugPrint(response)
    }

И я проанализировал JSON в этой структуре:

struct UserInfo: Codable {
let totalCount: Int
let incompleteResults: Bool
let items: [Item]

enum CodingKeys: String, CodingKey {
    case totalCount = "total_count"
    case incompleteResults = "incomplete_results"
    case items
}}

struct Item: Codable {

let id: Int
let userName: String

enum CodingKeys: String, CodingKey {
    case id
    case userName = "userName"
}}

Как получить доступ, например, поле userName?

Структура находится за пределами моего класса, и я хотел бы поместить ее в другой файл .swift

Большое спасибо!

1 Ответ

0 голосов
/ 15 марта 2020

То, что вы хотите использовать, это обратный вызов для отправки данных обратно в функцию, которая вызывает функцию networkRequestFunction.

  func makeRequest() {
            someRequest(url: "thisURL") { (userInfo, error) in
                guard let userInfo = userInfo else {
                    // present error
                    return
                }

                // Now you have your userStruct
                print(userInfo)
            }
        }


        func someRequest(url: String, callback: @escaping ((UserInfo?, AFError?) -> ())) {
                AF.request(url, method: .get).responseDecodable(of: UserInfo.self) { response in
                    switch response.result {
                    case .success(let info):
// This is where i missed that you already had decoded it, no need to guard let here
                        callback(info, nil)
                    case .failure(let error):
                        callback(nil, error)
                    }
            }
        }
...