Анализ различных объектов JSON с нескольких URL-адресовIOS

Программируем под IOS
Ответить
Anonymous
 Анализ различных объектов JSON с нескольких URL-адресов

Сообщение Anonymous »

Я новичок в Swift и начал изучать вызовы API. Я создал класс NetworkManager, из которого получаю данные по URL:

Код: Выделить всё

import Foundation

class NetworkManager {
let apiid = "?api_key=a415cfdc3dc928bd4649d310e90939e6"
func getData(from url: String, _ completed: @escaping ([String:Any]?) -> Void){
guard let safeUrl = URL(string: url + apiid) else {return}
URLSession.shared.dataTask(with: safeUrl){ data, urlResponse, error in
guard let safeData = data, error == nil, urlResponse != nil else {
completed(nil)
return
}
if let decodedObject = SerializationManager().parse(jsonData: safeData) as? [String:Any]{
completed(decodedObject)
}else{
print("ERROR")
completed(nil)
}
}.resume()
}
}
Класс работает, когда закрытие завершено, поскольку в качестве параметра используется некоторая модель JSON. Я попробовал вместо параметра модели JSON использовать [String:Any], чтобы можно было использовать любую модель JSON, но получил только ошибку:

Не удалось вывести общий параметр «T»

Кроме того, когда я вызываю функцию:

Код: Выделить всё

private extension HomeViewController {
func getMovies() {
networkManager.getData(from: "https://api.themoviedb.org/3/movie/now_playing") { (movieResponse) in
guard let movies = movieResponse?.results else {
return
}
self.movieList = movies
DispatchQueue.main.async { [unowned self] in
self.tableView.reloadData()
}
}
}
}
Я получаю сообщение об ошибке:

Тип выражения неоднозначен без дополнительного контекста< /p>

(функция работает, когда в классе NetworkManager вместо [String:Any] используется NowPlayingMovieReponse (мой Модель JSON)).

Подробнее здесь: https://stackoverflow.com/questions/681 ... tiple-urls
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»