Я извлек 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()
}
}
}