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()
- }
swift+moya URLCahe的更多相关文章
- Swift网络封装库Moya中文手册之Authentication
Authentication 安全验证可能有点复杂,一些网络请求需要认证,这里我们讨论两种常见的. Basic HTTP Auth HTTP auth是HTTP协议自带的用户名/密码验证.如果你使用的 ...
- Swift网络封装库Moya中文手册之Plugins
Plugins Moya plugins用于反映请求的发起或接收.Plugins定义为 PluginType 属性,可以在请求准备发起和接收到返回数据时回调. Built in plugins Moy ...
- Swift网络封装库Moya中文手册之Providers
Providers 使用Moya,你可以通过一个 MoyaProvider 的实例发送所有网络请求,通过枚举来指定你要访问的具体API.在配置你的 Endpoint 之后,你差不多就做好了基础配置: ...
- Swift高仿iOS网易云音乐Moya+RxSwift+Kingfisher+MVC+MVVM
效果 列文章目录 因为目录比较多,每次更新这里比较麻烦,所以推荐点击到主页,然后查看iOS Swift云音乐专栏. 目简介 这是一个使用Swift(还有OC版本)语言,从0开发一个iOS平台,接近企业 ...
- Swift网络封装库Moya中文手册之Endpoints
Endpoints Endpoint是一种半私有的数据结构,Moya用来解释网络请求的根本构成.一个endpoint储存了以下数据: The URL. The HTTP method (GET,POS ...
- Swift网络封装库Moya中文手册之RxSwift
RxSwift Maya提供了一个可选的MoyaProvider 子类 - RxMoyaProvider.在网络请求完成时,我们不再使用 request() 函数的回调闭包,而是使用 Observab ...
- Swift网络封装库Moya中文手册之Targets
Targets 使用Moya,我们首先需要定义一个target - 这通常是继承 TargetType 协议的 枚举 变量.接下来,你的app只需要处理这些targets,也就是一些你希望调用API完 ...
- Android与Swift iOS开发:语言与框架对比
Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等“新”语言还要年轻10岁.2015年秋已经开源.目前在linux上可用,最近已经支持Android NDK:在树莓派上有Sw ...
- Awesome Swift
Awesome Swift https://github.com/matteocrippa/awesome-swift A collaborative list of awesome Swift re ...
随机推荐
- python 进程理论基础
背景知识 顾名思义,进程即一个软件正在进行的过程.进程是对正在运行的程序的一个抽象 进程的概念起源于操作系统,是操作系统的最核心的概念,也是操作系统提供的最古老的也是最重要的抽象概念之一.操作系统的其 ...
- T - Amusing Joke(map)
Problem description So, the New Year holidays are over. Santa Claus and his colleagues can take a re ...
- create-react-app 中设置反向代理、项目打包资源引入路径设置及 map 文件
1.配置反向代理 (1)porxy 配置一个代理 修改package.json文件 "proxy":"http://teng.com/website/web", ...
- Node.js文件系统Api总结
//公共引用 var fs = require('fs'), path = require('path'); 1.读取文件readFile函数 //readFile(filename,[options ...
- 2B课程笔记分享_StudyJams_2017
课程2B-创建交互式应用(下) 概述 课程2B的内容主要包括:使用变量来更新欲显示在屏幕上的内容,为按钮添加事件响应(联系XML属性与Java方法)逻辑等. 后续的课程会逐步深入地讲解使用Java开发 ...
- C#中SetWindowPos函数详解
[DllImport("user32.dll")] private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWnd ...
- 【Python基础】while循环语句
Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务.其基本形式为: while 判断条件: 执行语句…… 执行语句可以是单个语句或语句 ...
- 关于图片和auido预加载
预加载老生常谈: funtion preLoadImages(imageArr){ var self = this; var newimages=[], loadedimages=0 var post ...
- 数据库Day3之SQL Server 触发器
最近在做一个人事管理系统写了几个简单的触发器 1.在删除员工信息表中员工信息时结果区提示被删除员工信息 create trigger teston 员工信息表after deleteasselect ...
- SqlLite提高批量插入速度的方法及原因分析
(1)-SQLite忽略大小写查询大部分数据库在进行字符串比较时,对大小写是不敏感的.但是SQLite却是大小写敏感的.如果想让SQLite忽略大小写,方法如下:方法一:使用大小写转换函数LOWER. ...