ios – 如何使用Moya pod为请求设置超时?

我正在使用 Swift 3和 Moya pod.

我使用Basic Usage配置了我需要的所有东西,但是我找不到任何可以设置超时的函数或变量(对于每个请求或特定请求).

我怎样才能做到这一点?

解决方法

haydarKarkincomment on GitHub中提供了答案.下面的代码片段直接从他的评论中复制.

您可以通过创建自定义Alamofire会话管理器为Moya提供程序创建自定义配置:

import Foundation
import Alamofire

class DefaultAlamofireManager: Alamofire.SessionManager {
    static let sharedManager: DefaultAlamofireManager = {
        let configuration = URLSessionConfiguration.default
        configuration.httpAdditionalHeaders = Alamofire.SessionManager.defaultHTTPHeaders
        configuration.timeoutIntervalForRequest = 20 // as seconds,you can set your request timeout
        configuration.timeoutIntervalForResource = 20 // as seconds,you can set your resource timeout
        configuration.requestCachePolicy = .useProtocolCachePolicy
        return DefaultAlamofireManager(configuration: configuration)
    }()    
}

然后在声明您的提供商时包含自定义Alamofire Manager:

let Provider = MoyaProvider<GithubAPI>(endpointClosure: endpointClosure,manager: DefaultAlamofireManager.sharedManager,plugins: [NetworkActivityPlugin(networkActivityClosure: networkActivityClosure)])

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...