Неверное преобразование из функции броска в функцию без метания - PullRequest
0 голосов
/ 24 октября 2018
  • xcode: версия 10.0 (10A255)
  • swift: 4.2
  • Мойя: 4.5

Я пытаюсь сделать NetworkManager struct.

struct NetworkManager: Networkable {

    internal var provider = MoyaProvider<VideoAPI>(endpointClosure: endpointClosure, requestClosure: requestClosure, plugins: [networkPlugin], trackInflights: false)
    static let environment: APIEnvironment = .development

    func recentlyList(page: Int, completion: @escaping (String) -> (Void)) {
        provider.request(.recentlyList(params: ["page": page])) { (result) in
            switch result {
            case let .success(response):
                do {
                    let jsonData = try JSON(data: response.data)
                    print(jsonData)

                    completion(String(data: response.data, encoding: String.Encoding.utf8)!)
                } catch {
                    print(error)
                }
            case let .failure(error):
                print(error)
            }
        }
    }
}

screenshot

Как я могу решить эту проблему?

Я узнаю этот код у здесь

-------------------- обновление

Редактировать Podfile, изменить Мойя на pod 'Moya', git: 'https://github.com/Moya/Moya.git', branch: 'development'

запустить pod install в терминале, это работает.

1 Ответ

0 голосов
/ 24 октября 2018

В вашем коде нет catch, что означает, что вы не перехватываете ошибки синтаксического анализа, поэтому закрытие throw .

Добавление catch должно решить проблему:

do {
    let jsonData = try JSON(data: response.data)
    print(jsonData)

    completion(String(data: response.data, endcoding: String.Encoding.utf8)!)
} catch { 
    print(error)
}
...