Невозможно получить модель из запроса <VIMVideo>(VimeoNetworking) - PullRequest
0 голосов
/ 06 мая 2019

Я интегрировал в приложение ios VimeoNetworking, используя код из git напрямую, потому что я не могу интегрировать использование cocoapods (не совместимо использование use_frameworks! С другими модулями) для получения приватной ссылки на некоторые видео (у меня есть профессиональный аккаунт).

Я могу аутентифицироваться и запрашивать информацию о видео.Когда запрос возвращается и присваивается классу (VIMVideo), объект загружается неправильно.

Если я получаю ответ, возвращаемый правильно, возвращает словарь из 30 элементов с информацией о видео.

Я проверил тот же код из примера кода VimeoNetworking, и он работает в другом проекте (с использованием тех же учетных данных, только другой модуль Vimeo используется один, а другой нет)

Если я сравниваюоба ответа json имеют одинаковые данные, но в другом порядке.У меня такое ощущение, что проблема в десериализации, используемой AFNetworking (3.1.0)

Предыдущая аутентификация

  let authenticationController = AuthenticationController(client: VimeoClient.defaultClient, appConfiguration: AppConfiguration.defaultConfiguration, configureSessionManagerBlock: nil)

        authenticationController.accessToken(token:tkn) { result in
            switch result
            {
            case .success(let account):
                print("authenticated successfully: \(account)")

                break;
            case .failure(let error):
                print("failure authenticating: \(error)")
            }
        }

Запрос видео

        let requestdir: Request<VIMVideo> = Request<VIMVideo>(path: "/videos/XXXXXXXX")

        let _ = VimeoClient.defaultClient.request(requestdir) { [weak self] result in

            switch result
            {
                case .success(let response):
                    //Here videodir have not value, but 
                    var videodir: VIMVideo! = response.model

                case .failure(let error):
                    let title = "Video Request Failed"
                    let message = "\(requestdir.path) could not be loaded: \(error.localizedDescription)"
                    let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
                    let action = UIAlertAction(title: "OK", style: .default, handler: nil)
                    alert.addAction(action)
                    strongSelf.present(alert, animated: true, completion: nil)
            }
        }

Консользахват ( 1 )

Файл Pod из VIMEO ПРИМЕР (Извлечение)

def shared_pods
    pod 'AFNetworking', '3.1.0'
    pod 'SwiftLint', '0.25.1'
    pod 'VimeoNetworking', :path => '../VimeoNetworking'
end

Файл Pod из моего проекта (Извлечение)

target 'LibroDig' do
   pod 'RestKit', '~> 0.27.3'
   pod 'JSONModel'
   pod 'SDWebImage', '~>3.8'
   pod 'AFNetworking', '3.1.0'
end

Я ожидал, что VIMVideo загрузит правильно все свойства.Я не могу найти разницу между двумя реализациями.

Заранее спасибо

1 Ответ

0 голосов
/ 06 мая 2019

Если все остальное не изменилось, у вас могут возникнуть проблемы с отказом от использования use_frameworks!.

Например, когда я удалю это из Podfile, используемого в примере проекта VimeoNetworking, я увижу это предупреждение:

Модуль Swift VimeoNetworking-iOS зависит от AFNetworking-iOS, которые не определяют модули.Чтобы выбрать те цели, которые генерируют карты модулей (что необходимо для импорта их из Swift при сборке в виде статических библиотек), вы можете установить глобально use_modular_headers! в своем Podfile или указать :modular_headers => true для определенных зависимостей.

В этой статье объясняется необходимость use_modular_headers! и упоминается совместимость с Objective-C.VimeoNetworking опирается на классы моделей, определенные в Objective-C, и мне интересно, затрагивается ли отображение на эти модели.

...