कैसे कर सकते हैं मैं का उपयोग इस नई पद्धति अन्य मॉडलों के लिए?

0

सवाल

class Network {
    func getingData(completion : @escaping ([Model]) -> ()) async {
        guard let url = URL(string: "https://jsonplaceholder.typicode.com/posts") else { return }
        do {
            let (data, _) = try await URLSession.shared.data(from: url)
            if let posts = try? JSONDecoder().decode([Model].self, from: data) {
                completion(posts)
            }
        }
        catch {
            print("error")
        }
    }
}
ios swiftui urlsession
2021-11-22 06:27:47
2

सबसे अच्छा जवाब

0

आप की कोशिश कर सकता है कुछ इस तरह का दृष्टिकोण है, जहां getData के साथ काम करता है Decodable, के रूप में उल्लेख किया गया था पिछले जवाब. इस विशेष उदाहरण में से एक सरणी Decodable.

struct Post: Decodable, Identifiable {
    let userId: Int
    let id: Int
    let title: String
    let body: String
    var comments: [Comment]?
}

struct Comment: Decodable, Identifiable {
    let postId: Int
    let id: Int
    let name: String
    let email: String
    let body: String
}

struct ContentView: View {
    let client = Network()
    @State var posts: [Post] = []  
    
    var body: some View {
        List {
            ForEach(posts, id: \.id) { post in
                Text(post.title)
            }
        }
        .task {
            posts = await client.getData(from: "https://jsonplaceholder.typicode.com/posts")
            // all comments from the first post
            let comments: [Comment] = await client.getData(from: "https://jsonplaceholder.typicode.com/posts/\(posts[0].id)/comments")
            print("\n---> comments: \(comments)")
        }
    }
}

class Network {

    func getData<T: Decodable>(from urlString: String) async -> [T] {
        guard let url = URL(string: urlString) else {
            print(URLError(.badURL))
            return [] // <-- todo, deal with errors
        }
        do {
            let (data, response) = try await URLSession.shared.data(for: URLRequest(url: url))
            guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 else {
                print(URLError(.badServerResponse))
                return [] // <-- todo, deal with errors
            }
            let results = try JSONDecoder().decode([T].self, from: data)
            return results
        }
        catch {
            return [] // <-- todo, deal with errors
        }
    }
    
}
2021-11-22 07:56:28
0

यह है क्या आप के लिए देख रहे हैं?

import Foundation

class Network {

  func getingData<Model: Decodable>(completion : @escaping ([Model]) -> ()) async {
    guard let url = URL(string: "https://jsonplaceholder.typicode.com/posts") else {
      return
    }
    do {
      let (data, _) = try await URLSession.shared.data(from: url)
      if let posts = try? JSONDecoder().decode([Model].self, from: data) {
        completion(posts)
      }
    } catch {
      print("error")
    }
  }

}

यदि हां, तो आप केवल जरूरत के लिए घोषित Model प्रकार के रूप में सामान्य है. केवल एक चीज आप की जरूरत है Model करने के लिए अनुरूप है Decodable (की आवश्यकता JSONDecoder().decode([Model].self, from: data) कॉल).

2021-11-22 07:29:35

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में