无法从Request <vimvideo>(VimeoNetworking)获取模型

时间:2019-05-06 13:26:27

标签: swift vimeo vimeo-ios

我已经直接使用git中的代码集成到了ios应用程序VimeoNetworking中,因为我无法使用cocoapods(与其他pod兼容使用use_frameworks!)集成到某些视频的私人链接(我有一个专业人士帐户)

我能够验证和请求视频信息。返回请求并将其分配给类(VIMVideo)时,对象未正确加载。

如果我得到返回的响应,则正确返回包含30条视频信息的字典。

我已经从VimeoNetworking示例代码中检查了相同的代码,并且该代码在另一个项目中有效(使用相同的凭据,只有不同的一个使用Vimeo的pod,而另一个不使用)

如果我比较两个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

VIMEO示例中的Pod文件(摘录)

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 :(得分:0)

如果其他所有条件都相同,则可能会因选择不使用use_frameworks!而遇到问题。

例如,当我将其从VimeoNetworking示例项目中使用的Podfile中删除时,会看到以下警告:

Swift窗格VimeoNetworking-iOS依赖于AFNetworking-iOS,后者未定义模块。要选择生成模块映射的目标(在将其作为静态库构建时从Swift导入它们是必需的),可以在Podfile中全局设置use_modular_headers!,或为特定依赖项指定:modular_headers => true

This article explainsuse_modular_headers!的需求,并提到了与Objective-C的互操作性。 VimeoNetworking依赖于Objective-C中定义的模型类,我想知道映射到这些模型是否受到影响。