Как извлечь одну строку значения из JSON в SwiftUI: - PullRequest
0 голосов
/ 27 апреля 2020

Я извлек json значения в SwiftUI, но проблема в том, что он всегда выводит представление списка, как представление таблицы. Я хочу вывести только одно значение с текстом. И я хочу поместить мои json значения в глобальную переменную, чтобы использовать ее где угодно. Как и в приведенном ниже коде представления, я пробовал много способов извлечь каждую строку из «networkManager.posts. (Что-то)». Но в этом все еще есть ошибки. Помоги мне.


import Foundation
import Foundation
import Combine


struct TestView: View {

    @ObservedObject var networkManager = NetworkManager()

    var body: some View {

        ZStack {
            NavigationView {

                    List(networkManager.posts) { post in
                        VStack {
                            Text(post.CD_FIRM)  // This is works well, but list form
                            Text(post.NM_FIRM)
                            Text(post.NM_USER)
                        }
                    }

                    Text(posts.CD_FIRM)  // This is What I want But not work
                     // I want to extract each string from my json
            }.onAppear {
                self.networkManager.fetchData()
            }
        }
    }
}

// my data model
struct Results: Decodable {
    let Table: [Post]
}

struct Post: Decodable, Identifiable {
    var id: String {
        return CD_FIRM
    }
    let CD_FIRM: String
    let NM_FIRM: String
    let CD_USER: String
    let NM_USER: String
}

// my networking manager
class NetworkManager: ObservableObject {

    @Published var posts = [Post]()

    func fetchData() {
        var urlComponents = URLComponents()
        urlComponents.scheme = "http"
        urlComponents.host = "183.111.148.229"
        urlComponents.path = "/mob_json/mob_json.aspx"
        urlComponents.queryItems = [
            URLQueryItem(name: "nm_sp", value: "UP_MOB_CHECK_LOGIN"),
            URLQueryItem(name: "param", value: "1000|1000|1")
        ]

        if let url = urlComponents.url {
            print(url)
            let session = URLSession(configuration: .default)
            let task = session.dataTask(with: url) { (data, response, error) in
                if error == nil {
                    let decoder = JSONDecoder()
                    if let safeData = data {
                        do {
                            let results = try decoder.decode(Results.self, from: safeData)

                            DispatchQueue.main.async {
                                self.posts = results.Table
                            }
                        } catch {
                            print(error)
                        }
                    }
                }
            }
            task.resume()

        }

    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...