zoukankan      html  css  js  c++  java
  • swift+moya URLCahe

    1、定义获取缓存策略的接口

    import Foundation
    protocol CachePolicyGettable {
      var cachePolicy: URLRequest.CachePolicy {get}
    }

    2、TargetType 实现该接口

    extension MoyaAPI: TargetType, CachePolicyGettable {
        var cachePolicy: URLRequest.CachePolicy {
            switch self {
            case .featured,.pizza,.categories:
                return .reloadIgnoringLocalCacheData
            }
        }
    
        ...
    }

    3、实现PluginType

    extension MoyaAPI: TargetType, CachePolicyGettable {
        var cachePolicy: URLRequest.CachePolicy {
            switch self {
            case .featured,.pizza,.categories:
                return .reloadIgnoringLocalCacheData
            }
        }

    4、应用PluginType

    let MoyaAPIPrivider = MoyaProvider<MoyaAPI>(plugins: [CachePolicyPlugin()])
    
    func all() -> Observable<[FeaturedViewModel]> {
            
            let networkData = MoyaAPIPrivider.rx.request(.featured)
                .filterSuccessfulStatusCodes()
                .debug()
                .mapArray(Featured.self)
                .map{ item -> [FeaturedViewModel] in
                    var viewModels: [FeaturedViewModel] = []
                    for model in item {
                        try! model.createOrUpdate()
                        
                        let viewModel = FeaturedViewModel(model: model)
                        viewModels.append(viewModel)
                    }
                    return viewModels
                }.asObservable()
    }
  • 相关阅读:
    GPS定位的实现
    app启动监听网络类型
    tableview 刷新某一行跟某一组
    给app 添加手势验证
    类似支付宝启动页面的实现
    xcode 插件安装路径
    Windows上Dart安装
    Skynet通讯遇到的奇怪问题
    与流氓的斗争
    Skynet:Debug Console的扩展
  • 原文地址:https://www.cnblogs.com/akiing/p/9723853.html
Copyright © 2011-2022 走看看