Mam krytyczny błąd pod wpływem następującego. Próbowałem wszystkiego, ale nie mogę uzyskać dostępu do struktury filmowej, ponieważ mówi, że rodzic "Typ" nie ma członka "Data", nawet jeśli wyraźnie to robi.

"Wartość typu" [typ?] "Nie ma" danych ""

MODEL

struct SearchData: Decodable  {
     let data: [Type?]
}

struct Type: Decodable  {
     let data: [Movie?]
}

struct Movie: Decodable {
     let title: String?
}

KONTROLER

    fileprivate var searchResults = [Movie?]()

    func fetchTitles()  {
    let urlString = "https://www.what-song.com/api/search?limit=10&field=america"
    guard let url = URL(string: urlString) else { return }

    URLSession.shared.dataTask(with: url) { (data, response, err) in
        // if error occurs
        if let err = err    {
            print("Failed to fetch titles", err)
            return
        }
        // if success

        guard let data = data else { return }

        do {
            let searchResult =  try JSONDecoder().decode(SearchData.self, from: data)

            self.searchResults = searchResult.data.data

            print(searchResult)

        }   catch   {
            print("Failed to decode JSON:", error)
        }
    }.resume()
}
-1
unicorn_surprise 21 luty 2019, 06:03

2 odpowiedzi

Najlepsza odpowiedź

Spróbuj tego :

var movieTitles = [String]()

for type in searchResult.data {
   for movie in type.data {
       guard let title = movie.title else { return }
       print(title)
       movieTitles.append(title)
   }
}
2
Paulw11 21 luty 2019, 23:39

Myślisz tutaj mały błąd

Searchresult.data.

Zwróci ci tablicę

Rodzaj

Musisz także przeanalizować tę tablicę, coś takiego

            searchResults = (searchResult.data[0]?.data)!
2
AjinkyaSharma 21 luty 2019, 03:52