Как получить подробный API в Swift UI с помощью Alamofire и Combine? - PullRequest
0 голосов
/ 11 июля 2020

Мой сетевой менеджер с Alamofire похож на этот для получения всего API ( NetworkManager.swift)

@Published var games = GamesDataList(results: [])
   @Published var loading = false
   private let api_url_base = "https://api.rawg.io/api/games"

И я хочу go для навигации, когда я получаю данные на основе Список отправленных идентификаторов: (HomeView.swift)

 List(networkManager.games.results) { game in
                        NavigationLink(destination: GameDetailView(game: game)){
                            GamesRowView(game: game)
                        }
                    }

И если я хочу переключать страницы, NetworkDetail.swift должен быть таким, чтобы Alamofire убирает из ID данные Dynami c.

  private func loadDetailData() {
        let parameters = "12"
        AF.request("\(api_url_detail)/\(id)",)
            .responseJSON{ response in
                guard let data = response.data else { return }
                let gamesDetail = try! JSONDecoder().decode(GamesDetail.self, from: data)
                print(gamesDetail)
                DispatchQueue.main.async {
                    self.gamesDetail = gamesDetail
                    self.loading = false
            }
        }
        

И это мой GameDetailView.swift

 var game: Games
    @ObservedObject var networkDetail = NetworkDetail()
    var body: some View {
        VStack {
            URLImage(URL(string:  "\(networkDetail.gamesDetail.background_image)")!, delay: 0.25) {proxy in
                proxy.image.resizable()
                    
                    .frame(width: 120, height: 80)
                    .aspectRatio(contentMode: .fill)
                    .clipped()
            }
            HStack {
                Text("Description").foregroundColor(.gray)
                Spacer()
            }
            Text(networkDetail.gamesDetail.description).lineLimit(nil)
            Spacer()
        }.navigationBarTitle(Text(game.slug), displayMode: .inline)
            .padding()
    }

Я хочу, когда нажимать элемент в списке передаст ID и сделает запрос от Alamofire:

View

введите описание изображения здесь

Помогите, пожалуйста, спасибо. Прямо сейчас подробный API по-прежнему имеет c.

...