Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS Swift Alamofire缓存策略_Ios_Swift_Alamofire - Fatal编程技术网

iOS Swift Alamofire缓存策略

iOS Swift Alamofire缓存策略,ios,swift,alamofire,Ios,Swift,Alamofire,在AlamofireVersion3中,我使用NSURLRequest.CachePolicy.returnCacheDataDontLoad进行请求缓存 let URLRequest = NSMutableURLRequest(url: URL(string: url)!) URLRequest.cachePolicy = NSURLRequest.CachePolicy.returnCacheDataDontLoad Alamofire.request(URLRequest)

Alamofire
Version3中,我使用
NSURLRequest.CachePolicy.returnCacheDataDontLoad
进行请求缓存

let URLRequest = NSMutableURLRequest(url: URL(string: url)!)
    URLRequest.cachePolicy = NSURLRequest.CachePolicy.returnCacheDataDontLoad
    Alamofire.request(URLRequest){...}
但是如何在Alamofire 4和swift 3中使用cachePolicy


谢谢

我到处搜索,结果是:

    let TheURL = DEFAULT_APP_URL + "api/getList?Id="+ID
    let urlString = NSURL(string: TheURL)
    var mutableURLRequest = URLRequest(url: urlString! as URL)
    mutableURLRequest.httpMethod = "GET"
    mutableURLRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
    mutableURLRequest.cachePolicy = NSURLRequest.CachePolicy.returnCacheDataElseLoad


    Alamofire.request(mutableURLRequest)
        .responseJSON
       {....}

这是我的工作代码

    private static func request(_ showHud: Bool = true, urlString: String,
                            httpMethod: HTTPMethod,
                            parameters: [String : Any] = [:],
                            headers: [String : Any] = [:],
                            success : @escaping SuccessBlock,
                            failure : @escaping ErrorBlock) {
    var additionalHeaders: HTTPHeaders?
    additionalHeaders = headers as? HTTPHeaders
    guard let url = URL(string: urlString) else { return }

    var urlRequest = URLRequest(url: url)
    if !(NetworkReachabilityManager()?.isReachable ?? false) {
        urlRequest.cachePolicy = .returnCacheDataDontLoad
    } else {
        showIndicator(showHud)
    }
    urlRequest.allHTTPHeaderFields = additionalHeaders
    urlRequest.httpMethod = httpMethod.rawValue
    do {
        urlRequest = httpMethod == .get ? try URLEncoding.default.encode(urlRequest, with: parameters) : try JSONEncoding.default.encode(urlRequest, with: parameters)
    } catch {
        failure(NSError(localizedDescription: "Something went wrong!"))
    }
    Alamofire.request(urlRequest).responseObject { (response: DataResponse<ResponseHandler>) in
        parseResponse(response, success: success, failure: failure)
    }
}
private static func请求(uuhud:Bool=true,urlString:String,
httpMethod:httpMethod,
参数:[字符串:任意]=[:],
标题:[字符串:任意]=[:],
成功:@escaping SuccessBlock,
失败:@转义错误块){
var additionalHeaders:HTTPHeaders?
additionalHeaders=标题为?HTTPHeaders
guard let url=url(字符串:urlString)else{return}
var urlRequest=urlRequest(url:url)
if!(NetworkReachabilityManager()?.isReachable?false){
urlRequest.cachePolicy=.returnCacheDataDontLoad
}否则{
显示指示器(显示HUD)
}
urlRequest.allHTTPHeaderFields=附加标头
urlRequest.httpMethod=httpMethod.rawValue
做{
urlRequest=httpMethod==.get?尝试URLEncoding.default.encode(urlRequest,带:参数):尝试jsonencodeding.default.encode(urlRequest,带:参数)
}抓住{
失败(N错误(本地化描述:“出现问题!”)
}
中的Alamofire.request(urlRequest).responseObject{(响应:DataResponse)
parseResponse(响应,成功:成功,失败:失败)
}
}
关键是在从缓存加载数据之前,我检查了internet连接。如果internet可用,我将显示加载程序,它将加载api,如果不可用,它将从缓存中提供数据